列表理解与元组赋值

Ste*_*van 2 python tuples list-comprehension list

我想问一下python中是否可以这样:

a,b = [i,i+1 for i in range(5)]
Run Code Online (Sandbox Code Playgroud)

我知道这是不可能的,因为我有一个错误,但我想你明白我想要实现的目标.让我澄清一下,我能做到:

a,b = 3+2,3
Run Code Online (Sandbox Code Playgroud)

编辑--->甚至更好:

a,b = [0,1,2,3,4],[1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)

在我的第一个代码示例中,我不是类似的东西.我试图将变量'a'和'b'分配为列表,使用列表理解,但使用元组作为赋值,重点是我不想使用它:

a = [i for in range(5)]
b = [i+1 for in range(5)]
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用它:t = [(i,i+1) for i in range(5)]但这不是重点.
顺便说一下这只是一个简单的例子=>"i,i + 1"

编辑--->我想澄清一下我的问题.如何使用列表推导在一行中分配多个变量(类型列表)?

mhl*_*ter 7

当你运行这个:

a,b = [(i,i+1) for i in range(5)] # wrapped i, i+1 in parentheses (syntax error)
Run Code Online (Sandbox Code Playgroud)

它列出了五个两项元组,如下所示:

[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5)]
Run Code Online (Sandbox Code Playgroud)

但是你试图将这五个元组分配给两个对象(ab)

zip中使用参数解包(*),您可以将输出"解压缩"到每个元组的第一个和第二个元素:

a,b = zip(*[(i,i+1) for i in range(5)])
Run Code Online (Sandbox Code Playgroud)

这是:

[(0, 1, 2, 3, 4), (1, 2, 3, 4, 5)]
Run Code Online (Sandbox Code Playgroud)

并且可以分配给您a并且b正如您所写的那样