说,
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
返回 alist
本身。因此,调用数据结构是没有用的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()
如果您想获取 an 的所有值,这可能会很有用iterator
:
In [11]: y=xrange(5)
In [12]: y
Out[12]: xrange(5)
In [13]: list(y)
Out[13]: [0, 1, 2, 3, 4]
是的,在这种情况下是不必要的:-)