Python 如何将一个值附加到列表中的每个元组?

Python 如何将一个值附加到列表中的每个元组?,python,list,append,tuples,sublist,Python,List,Append,Tuples,Sublist,如何向列表中的每个元组追加1个值 tuple_list = [('a','b'),('c','d'),('e','f')] value = 111 Desired_List = [(111,'a','b'),(111,'c','d'),(111,'e','f')] 我尝试了以下方法: for x in tuple_list: x.append(111) for x in tuple_list: x + '111' 我更喜欢子列表而不是元

如何向列表中的每个元组追加1个值

 tuple_list = [('a','b'),('c','d'),('e','f')]
 value = 111


 Desired_List = [(111,'a','b'),(111,'c','d'),(111,'e','f')]
我尝试了以下方法:

   for x in tuple_list:
        x.append(111)

   for x in tuple_list:
        x + '111'
我更喜欢子列表而不是元组,那么是否也可以将元组更改为子列表

注: 实际上,111是在元组的第一个索引还是最后一个索引中并不重要

使用
map

>>> tuple_list = [('a','b'),('c','d'),('e','f')]
>>> map(list, tuple_list)
[['a', 'b'], ['c', 'd'], ['e', 'f']]
或者是一份清单

>>> [list(elem) for elem in tuple_list]
[['a', 'b'], ['c', 'd'], ['e', 'f']]
因为您想要的输出是一个元组列表,所以您可以这样做

>>> [(111,) + elem for elem in tuple_list]
[(111, 'a', 'b'), (111, 'c', 'd'), (111, 'e', 'f')]

你可以使用列表理解来完成你想做的两件事

前缀:

desired_list = [[value]+list(tup) for tup in tuple_list]
添加后缀:

desired_list = [list(tup)+[value] for tup in tuple_list]

list()
调用将每个元组转换为一个列表,添加另一个仅包含
值的列表将该值添加到创建后的每个列表中。

您可以为此应用
map
with lambda函数:

new_list = map(lambda x: [111] + list(x), tuple_list)

元组是不可变的,因此不能向它们追加内容。你只能创建新的元组。但是你可以连接元组,所以可以用
x+=(111),
列表理解被认为比
map
+
lambda
更具Pythonic。map+lambda不是更快吗?@Amber没有人知道“Pythonic”是什么意思了。这只是另一种选择,可能更快,也可能更慢,但这是一个可行的解决方案。。。有些人喜欢lambdas、地图和过滤器。。。我喜欢列表的理解和生成器,但这与答案的正确性无关:)“pythonic”?这句话是不是该退出了?在我看来,列表比较容易理解,但是lambda是一个完全合理的方法。@Chris我怀疑有什么不同。请看这个问题:我认为这个解决方案有点离谱,因为OP想要的是元组列表,而不是列表列表。使用提供的解决方案的简单修复方法如下:
desired\u list=[tuple(list(tup)+[value])对于tuple\u list中的tup]
要获得正确的tuple列表解决方案,可以通过执行
desired\u list=[(value,)+v对于tuple\u list中的v]