python - 列表理解与元组赋值

标签 python list tuples list-comprehension

我想问问这样的东西在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)]

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

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

a,b = zip(*[(i,i+1) for i in range(5)])

这是什么:

[(0, 1, 2, 3, 4), (1, 2, 3, 4, 5)]

并且可以像你写的那样分配给ab

关于python - 列表理解与元组赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21493637/

相关文章:

r - 将行添加到来自另一个数据框的数据框列表

r - 使用空索引索引列表

c++ - std::tuple_cat 但只有独特的元素

c# - 为什么我无法在 C# 中序列化元组?

r - 在一行中为 LHS 分配多个新变量

python - ffmpeg使用python子进程设置文件名模式

python - 为什么 root.quit() 或 root.destroy() 不起作用,而是两者的组合起作用?

Python:如何创建包含字典键和值对的列表

python - 如何使用 Python 2 标准库在 Windows 中检索文件的详细信息

python - 从 Python 列表中获取整数