[英]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?
[英]Why does list comprehension using a zip object results in an empty list?
f = lambda x : 2*x
g = lambda x : x ** 2
h = lambda x : x ** x
funcTriple = ( f, g, h )
myZip = ( zip ( funcTriple, (1, 3, 5) ) )
k = lambda pair : pair[0](pair[1])
# Why do Output # 1 (2, 9, 3125) and Output # 2 ( [ ] ) differ?
print ("\n\nOutput # 1: for pair in myZip: k(pair) ...")
for pair in myZip :
print ( k(pair) )
print ("\n\nOutput # 2: [ k(pair) for pair in myZip ] ...")
print ( [ k(pair) for pair in myZip ] )
# script output is ...
# Output # 1: for pair in myZip: k(pair) ...
# 2
# 9
# 3125
#
# Output # 2: [ k(pair) for pair in myZip ] ...
# []
在Python 2.6中完美運行但在Python 3.0中失敗,因為zip
返回一個生成器樣式的對象,第一個循環耗盡它。 改為列出一個清單:
myZip = list( zip ( funcTriple, (1, 3, 5) ) )
它適用於Python 3.0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.