python列表理解解压缩多个返回

发布于 2024-10-18 08:54:04 字数 290 浏览 3 评论 0原文

有人知道如何解压元组中的值以进行列表理解吗?

一个实际的例子:

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) = ...

anyone have any idea how to unpack the values in a tuple for a list comprehension?

So a practical example:

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) ] 

Unfortunately, that gives me an error sayin' there are too many values to unpack...

I've tried

zip(*func(i,j)) 
(a,b) = ...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

清音悠歌 2024-10-25 08:54:04

您的意思是以下内容吗?:

a, b = zip(*[func(i,j) for i, j in zip(x,y)])

Do you mean the following?:

a, b = zip(*[func(i,j) for i, j in zip(x,y)])
小鸟爱天空丶 2024-10-25 08:54:04
for x1,y1 in [func(i,j) for i, j in zip(x,y)]:
     # do something with x1,y1
for x1,y1 in [func(i,j) for i, j in zip(x,y)]:
     # do something with x1,y1
爱她像谁 2024-10-25 08:54:04

问题在于列表理解返回类似的内容

[(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)

尝试将所有内容打包在一行中,使用花哨的列表解包等,并不一定会增加可读性。

The problem is that the list comprehension returns something like

[(1,1), (4,4), (6,6),..]

so the list contains more than just two elements.

I don't see why you can't just do:

a = [i*2 for i in x]
b = [i*2 for i in y]

If you are worried about duplicate code, create a function:

def func(l):
    return [i*2 for i in l]

a, b = func(x), func(y)

Trying to pack everything in one line, using fancy list unpacking etc., does not necessarily increase readability.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文