我有一个清单:
row = ["Title", "url", 33, "title2", "keyword"]
是否有更多pythonic方法来解压缩这些值,如:
title, url, price, title2, keyword = row[0], row[1], row[2], row[3], row[4]
答案 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)