我有一个看起来很简单的问题,但我还没有找到可接受的答案。看起来它的变化已经在这里多次提出,但没有一个答案对我有帮助。
这是:
我有一个元组列表,如下所示:
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")]
这看起来很傻,列表理解应该可以解决问题,但我无法分辨: - (
提前感谢您提供的任何帮助。
答案 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位置,然后将该列表转换回一个元组,并将它们放在一个新的列表中。