簡體   English   中英

為什么對 zip() 調用的列表理解返回包含 zip object 的列表,而不是 zip() 的返回值列表?

[英]Why does a list comprehension over a zip() call return a list containing the zip object instead of a list of zip()'s return values?

使用 python3 REPL 並注意到以下內容:

為什么是print( [zip([1,2,3], [3,1,4])] )print( list(zip([1,2,3], [3,1,4])) )不同的?

第一個返回[<zip object at 0xblah>] ,第二個返回[(1,3), (2,1), (3,4)]

試圖理解為什么第一個語句中的列表理解沒有給我list()構造函數給出的結果 - 我想我對列表理解和list()之間的區別感到困惑,並希望深入了解下面發生的事情引擎蓋。

搜索給了我這個關於列表和元組的問題,它沒有回答我的問題。

編輯:關於Python 3 中的 zip() function的建議問題是非常有用的背景,但沒有解決我的問題中關於列表理解列表文字之間差異的混淆,所以我更喜歡下面提交的答案更完整.

第一條語句不是列表推導,列表推導會給您相同的結果。 它只是一個包含 zip object 的列表文字:

這將是一個列表理解:

[value for value in zip([1,2,3], [3,1,4])]

上面將打印與list(zip([1, 2, 3], [3, 1, 4]))相同的內容。


一般來說, [something]意味着:一個包含一個元素的列表: something

另一方面, list(something)意味着:迭代某事物中的值,並從結果中創建一個列表。 例如,您可以通過將原始對象放入其中來查看差異,例如數字:

>>> [2]
[2]
>>> list(2)
TypeError: 'int' object is not iterable

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM