我想问问这样的东西在python中是否可行:
a,b = [i,i+1 for i in range(5)]
我知道这是不可能的,因为我遇到了一个错误,但我想你明白我想要实现的目标。让我清理一下,我可以做到:
a,b = 3+2,3
编辑 ---> 或者更好:
a,b = [0,1,2,3,4],[1,2,3,4,5]
我不想在我的第一个代码示例中使用类似的东西。我正在尝试将变量“a”和“b”分配为列表,具有列表理解,但使用元组作为分配,关键是我不想使用它:
a = [i for in range(5)]
b = [i+1 for in range(5)]
我知道我可以使用这个:t = [(i,i+1) for i in range(5)]
,但这不是重点。
顺便说一句,这只是一个简单的例子 => "i,i+1"
编辑 ---> 我想澄清我的问题。如何使用列表理解在一行中分配多个变量(类型列表)?
最佳答案
当你运行它时:
a,b = [(i,i+1) for i in range(5)] # wrapped i, i+1 in parentheses (syntax error)
它生成了一个包含五个两项元组的列表,如下所示:
[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5)]
但是您试图将这五个元组分配给仅两个对象(a
和 b
)
在 zip 中使用参数解包 (*) ,您可以将输出“解压缩”到每个元组的第一个和第二个元素:
a,b = zip(*[(i,i+1) for i in range(5)])
这是什么:
[(0, 1, 2, 3, 4), (1, 2, 3, 4, 5)]
并且可以像你写的那样分配给a
和b
关于python - 列表理解与元组赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21493637/