如何将序列号添加到元组列表中

时间:2015-12-03 01:29:03

标签: list python-2.7 tuples

我有一个看起来很简单的问题,但我还没有找到可接受的答案。看起来它的变化已经在这里多次提出,但没有一个答案对我有帮助。

这是:

我有一个元组列表,如下所示:

reflist = [("Author1", 1900, "Some reference"), ("Author2", 1901, "Another reference"), ("Author3", 1902, "Yet another reference")]

我想要的是为列表中的每个元组添加一个序列号,以便我得到:

reflist = [(1, "Author1", 1900, "Some reference"), (2, "Author2", 1901, "Another reference"), (3, "Author3", 1902, "Yet another reference")]

这看起来很傻,列表理解应该可以解决问题,但我无法分辨: - (

提前感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:2)

enumerate()遍历序列并生成索引值对。你不能直接合并到你的元组 - 因为元组是不可变的,你不能改变它们的长度 - 但你可以做的一种方法是将你的元组转换成列表,使索引号成为一个列表,将两个列表连接在一起,并将结果转换为元组:

reflist2 = [tuple([index+1] + list(ref)) for index, ref in enumerate(reflist)]

(我已将其编辑为索引+ 1,因为枚举从0开始计数)

答案 1 :(得分:0)

f = [tuple(list(elem).insert(0, i)) for elem in reflist for in range(len(reflist))]

这个列表理解的作用是它告诉reflist中的每个原始条目,它应该将它转换为一个列表,然后在一个整数列表中插入一个数字到列表的0位置,然后将该列表转换回一个元组,并将它们放在一个新的列表中。