如何从列表理解中的一行中提取两个元组?
How to extract two tuples from a single row in a list comprehension?
我正在尝试完成一个相当简单的任务:我正在读取一个 csv 文件,该文件在第 0 列中包含一个 ID,在第 2 列和第 3 列中包含与该 ID 关联的两个文本。我现在想形成一个列表,其中包含(ID, Text) 的元组。但是,不知何故,我无法将其纳入单个列表理解中。这是我目前所拥有的:
import csv
with open(filename) as csvfile:
reader = csv.reader(csvfile, delimiter=';')
next(reader)
rows = [(row[0], row[2]) for row in reader]
rows.extend([(row[0], row[3]) for row in reader])
问题是 extend
不起作用,因为 reader
已经被迭代了...
关于如何在一个列表理解中做到这一点有什么建议吗?
您可以进行第二次迭代:
rows = [value for row in reader
for value in [(row[0], row[2]), (row[0], row[3])]]
我正在尝试完成一个相当简单的任务:我正在读取一个 csv 文件,该文件在第 0 列中包含一个 ID,在第 2 列和第 3 列中包含与该 ID 关联的两个文本。我现在想形成一个列表,其中包含(ID, Text) 的元组。但是,不知何故,我无法将其纳入单个列表理解中。这是我目前所拥有的:
import csv
with open(filename) as csvfile:
reader = csv.reader(csvfile, delimiter=';')
next(reader)
rows = [(row[0], row[2]) for row in reader]
rows.extend([(row[0], row[3]) for row in reader])
问题是 extend
不起作用,因为 reader
已经被迭代了...
关于如何在一个列表理解中做到这一点有什么建议吗?
您可以进行第二次迭代:
rows = [value for row in reader
for value in [(row[0], row[2]), (row[0], row[3])]]