将列表解压缩到变量

时间:2015-12-16 09:32:26

标签: python list

我有一个清单:

row = ["Title", "url", 33, "title2", "keyword"]

是否有更多pythonic方法来解压缩这些值,如:

title, url, price, title2, keyword = row[0], row[1], row[2], row[3], row[4]

5 个答案:

答案 0 :(得分:22)

这样的东西?

>>> row = ["Title", "url", 33, "title2", "keyword"]
>>> title, url, price, title2, keyword = row

另外,对于记录,请注意您的示例将因IndexError而失败(Python的列表从零开始)。

编辑:上述说明是在OP示例修复之前编写的......

答案 1 :(得分:6)

实际上,当变量用逗号分隔时,python会自动解包容器。这会将row中的每个元素分配给左侧的变量:

title, url, price, title2, keyword = row

完成此作业后,title的值为“标题”,price的值为33,等等。

答案 2 :(得分:0)

您还可以轻松地将其解压缩为一个类或namedtuple

from collections import namedtuple

row = ["Title", "url", 33, "title2", "keyword"]

Entry = namedtuple("Entry", "title url price title2 keyword")
new_entry  = Entry(*row)
print(new_entry.title) # Title

答案 3 :(得分:0)

如果只需要很少的第一个变量,则在Python 3中可以使用:

row = ["Title", "url", 33, "title2", "keyword"]
title, url, *_ = row

这是不使用显式索引而提取少量第一个值的好方法

答案 4 :(得分:0)

另一种简单的元组/列表包装 -在* row

后记','
i
*row, = ["Title", "url", 33, "title2", "keyword"]  # creates a tuple of row elements
title, url, price, title2, keyword = row  # list unpacking unpacked here
for i in range(len(row)):
    print(row[i])
print()
print(title)