循环遍历元组的python列表并更改值

mon*_*top 4 python tuples list

我有这个代码

a=[(1,'Rach', 'Mell', '5.11', '160'),(2, 'steve', 'Rob', '6.1', '200'), (1,'Rach', 'Mell', '5.11', '160')]
Run Code Online (Sandbox Code Playgroud)

如果 id = 2,我想将姓氏 Rob 更改为 'Roberto'
所以我的想法是将元组更改为列表,以便进行更改

我试过 :

a_len = len(a)
count = 0
a_list = []
while(count < a_len):
     a_list.append(a[count])
     count ++

for x, element in a_list:
     if element[0] == 2:
          a_list[x] = Roberto
Run Code Online (Sandbox Code Playgroud)

但这不起作用,你们知道该怎么做吗?

谢谢!

the*_*olf 5

这样做:

a=[(1,'Rach', 'Mell', '5.11', '160'),(2, 'steve', 'Rob', '6.1', '200'), (1,'Rach', 'Mell', '5.11', '160')]

for i,e in enumerate(a):
    if e[0]==2: 
        temp=list(a[i])
        temp[2]='Roberto'
        a[i]=tuple(temp)

print a        
Run Code Online (Sandbox Code Playgroud)

印刷:

[(1, 'Rach', 'Mell', '5.11', '160'), (2, 'steve', 'Roberto', '6.1', '200'), (1, 'Rach', 'Mell', '5.11', '160')]
Run Code Online (Sandbox Code Playgroud)

如果你想要一个列表理解,这个:

>>> [t if t[0]!=2 else (t[0],t[1],'Roberto',t[3],t[4]) for t in a]
[(1, 'Rach', 'Mell', '5.11', '160'), (2, 'steve', 'Roberto', '6.1', '200'), (1, 'Rach', 'Mell', '5.11', '160')]
Run Code Online (Sandbox Code Playgroud)