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

2024-04-28 12:41:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个密码

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

如果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

但这没用,你们知道怎么做吗?

谢谢!


Tags: id密码列表lencountelementliststeve
3条回答

试试这个:

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

a_list = []
for ele in a:
    a_list.append(list(ele))

for ele in a_list:

    if ele[0] == 2:
        ele[2] = "Roberto"

print a_list

试试这个:

for idx, row in enumerate(a):
    id, name, surname, valA, valB = row
    if id == 2 and surname == 'Rob':
        a[idx] = (id, name, 'Roberto', valA, valB)

这样做:

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        

印刷品:

[(1, 'Rach', 'Mell', '5.11', '160'), (2, 'steve', 'Roberto', '6.1', '200'), (1, 'Rach', 'Mell', '5.11', '160')]

如果您想了解列表,请执行以下操作:

>>> [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')]

相关问题 更多 >