Python 将列表中的元组替换为它';第一次进入
我正在使用python 3 我有一个不同元组的列表。每个元组的第一个值总是相同的,但其余值会有所不同。如何在包含第一个值的元组之后搜索列表,然后将整个元组替换为列表中的新元组? 前任: 这是我的元组:Python 将列表中的元组替换为它';第一次进入,python,list,replace,tuples,equals,Python,List,Replace,Tuples,Equals,我正在使用python 3 我有一个不同元组的列表。每个元组的第一个值总是相同的,但其余值会有所不同。如何在包含第一个值的元组之后搜索列表,然后将整个元组替换为列表中的新元组? 前任: 这是我的元组:(122,23,24,9) 此元组位于列表中,第一个值始终相同,但其余值不同 如何在列表中找到第一个值等于我的元组“122”的元组,并将其替换为我的整个元组 (125, 34, 35, 21) (122, 341, 5, 27) (124, 31, 51, 7) 假设列表是l,元组是t,并且始
(122,23,24,9)
此元组位于列表中,第一个值始终相同,但其余值不同
如何在列表中找到第一个值等于我的元组“122”的元组,并将其替换为我的整个元组
(125, 34, 35, 21)
(122, 341, 5, 27)
(124, 31, 51, 7)
假设列表是
l
,元组是t
,并且始终只有一个元组要替换:
l[l.index([_ for _ in l if _[0] == t[0]][0])] = t
我承认不漂亮
如果列表中有多个元组具有匹配的第一个值,则仅替换第一个元组
a = [(125, 34, 35, 21), (122, 341, 5, 27), (124, 31, 51, 7)]
t = (122, 23, 24, 9)
for i, v in enumerate(a):
if v[0] == t[0]:
a[i] = t
break
但是,对于更改正在迭代的列表的值有不同的含义,但是因为您在我认为没有问题之后立即中断了!请注意,中断意味着您只在列表中查找一个可能的元组,而且如果您的列表包含数百万个条目,则如果您的值位于列表的早期,则不会循环遍历所有值,以获得更好的性能
编辑:
添加了替换元组
t
您可以使用索引方法或通过在列表上循环来搜索列表中的元素。例如,对于索引
方法:
mylist = [(125, 34, 35, 21),
(122, 341, 5, 27),
(124, 31, 51, 7)]
idx = mylist.index((122, 341, 5, 27))
# idx should be '1'
问题是,它只在完全找到整个元组时才找到条目。所以这对你来说可能不是最好的解决方案
对于循环,这可能如下所示:
for idx, itm in enumerate(mylist):
if itm[0] == 122:
mylist[idx] = (1,2,3,4,5) # your new tuple
我正在使用enumerate
为列表中的每个元素添加索引
l = [(125, 34, 35, 21), (122, 341, 5, 27), (124, 31, 51, 7)]
t = (122, 23, 24, 9)
out = [t if e[0] == t[0] else e for e in l]
print(out)
这将打印出:
[(125, 34, 35, 21), (122, 23, 24, 9), (124, 31, 51, 7)]
你的问题不清楚。你能给出你想要处理的输入和输出的例子吗?正如我所说的,我得到了一个包含一些元组的列表,我需要用一个新元组替换列表中的一个元组,我需要替换的元组是第一个值等于我想用它替换的元组的元组。(元组中的第一个值是tup[0])+1漂亮多了,我忘记了列表理解中的else
!