任何人都知道如何解析元组中的值以获得列表解析?
这是一个实际的例子:
def func(x,y):
return x*2, y*2
x = [1, 2, 3]; y = [1, 2, 3]
a, b = [ func(i,j) for i, j in zip(x,y) ]
不幸的是,这给了我一个错误,说'有太多值要解压...
我试过
zip(*func(i,j))
(a,b) = ...
答案 0 :(得分:7)
你的意思是:?
a, b = zip(*[func(i,j) for i, j in zip(x,y)])
答案 1 :(得分:1)
for x1,y1 in [func(i,j) for i, j in zip(x,y)]:
# do something with x1,y1
答案 2 :(得分:1)
问题是列表理解返回类似
的内容[(1,1), (4,4), (6,6),..]
因此该列表不仅包含两个元素。
我不明白为什么你不能这样做:
a = [i*2 for i in x]
b = [i*2 for i in y]
如果您担心重复的代码,请创建一个函数:
def func(l):
return [i*2 for i in l]
a, b = func(x), func(y)
尝试使用精美列表解包等将所有内容打包在一行中,并不一定会提高可读性。