Python列表元组

Nul*_*ion 2 python dictionary tuples list

说,

data = { 123: 1, 234: 2, 241: 4 }
a = list(sorted(data.items()))
Run Code Online (Sandbox Code Playgroud)

是不是没有列表?我想,sorted(data.items())自己将返回listtuples?为什么有人会专门使用列表功能?

Jon*_*ier 5

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__'
Run Code Online (Sandbox Code Playgroud)

我们可以使用它list来使用迭代器并在列表中使用它的结果:

In [3]: list(reversed([3,1,2]))[1]
Out[3]: 1
Run Code Online (Sandbox Code Playgroud)

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]
Run Code Online (Sandbox Code Playgroud)

  • +1.OP问题的关键可能是,无论是谁编写的都不是肯定`sorted`是否返回了一个列表,而不是考虑它或只是在解释器中测试它,决定添加一个额外的`列表'.为了安全起见. (2认同)