言う、
data = { 123: 1, 234: 2, 241: 4 }
a = list(sorted(data.items()))
リストは不要ではないですか?私は、sorted(data.items())
それ自体が戻ってくるlist
と思いますtuples
か?なぜ誰かがリスト関数を具体的に使用するのでしょうか?
言う、
data = { 123: 1, 234: 2, 241: 4 }
a = list(sorted(data.items()))
リストは不要ではないですか?私は、sorted(data.items())
それ自体が戻ってくるlist
と思いますtuples
か?なぜ誰かがリスト関数を具体的に使用するのでしょうか?
このlist
場合、呼び出しは不要です。正解です。
一部のPythonメソッドは、リストではなくイテレータを返します。このlist
関数を使用して、イテレータを強制的にリストにすることができます(たとえば、インデックスを付けることができます)。
reversed
たとえば、イテレータを返す関数を考えてみましょう。
In [1]: type(reversed([3,1,2]))
Out[1]: listreverseiterator
In [2]: reversed([3,1,2])[1]
---------------------------------------------------------------------------
TypeError: 'listreverseiterator' object has no attribute '__getitem__'
list
イテレータを使用し、その結果をリストで使用するために使用できます。
In [3]: list(reversed([3,1,2]))[1]
Out[3]: 1
list
他のリストのようなタイプを具体的なリストにするために使用される可能性があります:
In [4]: (1,2,3).append(4)
---------------------------------------------------------------------------
AttributeError: 'tuple' object has no attribute 'append'
In [5]: list((1,2,3)).append(4) # => [1, 2, 3, 4]
はい、自分自身をsorted
返しますlist
。したがって、データ構造を呼び出すことlist()
はlist
無意味です。それを呼び出すlist()
ことはと同等sorted(data.items())[:]
です。
In [7]: print sorted.__doc__
sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
In [8]: lis=[1,2,3]
In [9]: lis
Out[9]: [1, 2, 3]
In [10]: list(lis) #same result, but different object. (A shallow copy)
Out[10]: [1, 2, 3]
list()
iterator
:のすべての値をフェッチする場合に便利です。
In [11]: y=xrange(5)
In [12]: y
Out[12]: xrange(5)
In [13]: list(y)
Out[13]: [0, 1, 2, 3, 4]
はい、この場合は不要です:-)