我正在编写一个脚本,我有一个像元组的列表('1','2','3','4').例如:
list = [('1','2','3','4'),
('2','3','4','5'),
('3','4','5','6'),
('4','5','6','7')]
Run Code Online (Sandbox Code Playgroud)
现在我需要添加'1234','2345','3456'并'4567'分别为每个元组的结尾.例如:
list = [('1','2','3','4','1234'),
('2','3','4','5','2345'),
('3','4','5','6','3456'),
('4','5','6','7','4567')]
Run Code Online (Sandbox Code Playgroud)
有可能吗?
And*_*Dog 123
元组是不可变的,不应该被更改 - 这就是列表类型的用途.您可以替换每个元组originalTuple + (newElement,),从而创建一个新的元组.例如:
t = (1,2,3)
t = t + (1,)
print t
(1,2,3,1)
Run Code Online (Sandbox Code Playgroud)
但我宁愿建议从一开始就使用列表,因为它们插入项目的速度更快.
另一个提示:不要覆盖程序中的内置名称list,而是调用变量l或其他名称.如果覆盖内置名称,则不能再在当前范围内使用它.
atp*_*atp 15
基于语法,我猜这是Python.元组的要点是它是不可变的,所以你需要用一个新的元组替换每个元素:
list = [l + (''.join(l),) for l in list]
# output:
[('1', '2', '3', '4', '1234'),
('2', '3', '4', '5', '2345'),
('3', '4', '5', '6', '3456'),
('4', '5', '6', '7', '4567')]
Run Code Online (Sandbox Code Playgroud)
在Python中,你不能.元组是不可变的.
在包含列表中,您可以('1', '2', '3', '4')使用不同的('1', '2', '3', '4', '1234')元组替换元组.
小智 7
正如其他人已经回答的那样,python中的元组是不可变的,"修改"元组的唯一方法是创建一个包含附加元素的新元素.
但最好的解决方案是列表.当需要调用元组的任何函数或方法时,使用元组(list)创建元组.
正如其他答案中提到的那样,元组一旦创建便是不可变的,并且列表可能会更好地满足您的目的。
也就是说,使用额外的项目创建新元组的另一种方法是使用splat运算符:
new_tuple = (*old_tuple, 'new', 'items')
我喜欢这种语法,因为它看起来像一个新的元组,因此可以清楚地传达您要执行的操作。
使用splat,可能的解决方案是:
list = [(*i, ''.join(i)) for i in list]
我正在查看与tupleand相关的一些细节list,我的理解是:
Heterogeneous集合数据类型因此,要将新项目附加到元组,需要将其转换为list,并对其进行append()操作,然后再次将其转换回元组。
但我个人是什么,我觉得这样一个问题,如果元组应该是有限的,固定长度的东西,如果我们在我们的应用程序逻辑使用这些数据类型的话,应该不会是追加新项目或更新中的一个项目价值的情景它。因此,而不是元组列表,它应该是列表本身的列表,我对吗?