将类似范围的序列连接到元组列表

时间:2018-02-05 21:45:42

标签: python

我有一个像这样的元组列表。

rows = []
r1 = ('one.csv', 230)
r2 = ('two.xls', 932)
rows.append(r1)
rows.append(r2)

我想为列表中的每个元组添加第三个元素,这是一个用于sql数据库的整数键。在添加其他元素之前,我必须等到行填充完毕。在此示例中,我希望元组看起来像('one.csv', 230, 0)('two.xls', 930, 1)。通常,这些键整数不会从一开始。

这是一个简单的操作,但我想知道是否有更多的pythonic方法(即不使用for循环)。我的另一个想法是转换为pandas数据框,但我认为下面的方法比转换成数据框更好。

rows2 = []
count = 0
for r in rows:
    rows2.append(r + (count,))
    count += 1

2 个答案:

答案 0 :(得分:3)

[r + (i,) for i, r in enumerate(rows, 1)]

打印:

[('one.csv', 230, 1), ('two.xls', 932, 2)]

enumerate()的第二个参数是要开始的索引。

答案 1 :(得分:2)

[(v1, v2, i) for i, (v1, v2) in enumerate(rows)]

使用python 3,它可以更短

[(*row, i) for i, row in enumerate(rows)]