在这种情况下,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]