我有这段代码
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
但这不起作用,你们有什么想法怎么做?
谢谢!
答案 0 :(得分:4)
这样做:
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')]
答案 1 :(得分:2)
试试这个:
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)
答案 2 :(得分:2)
简短回答
a_list = [(_id, first, 'Roberto' if (last == 'Rob' and _id == 2) else last, x,y) for _id, first, last, x, y in a ]
这是python的列表理解,这是python的一个很棒的工具。
以上内容与以下代码含义相同:
a_list = []
for _id, first, last, x, y in a:
if last == 'Rob' and _id == 2:
last =' Roberto'
a_list.append((_id, first, last, x, y))
答案 3 :(得分:2)
试试这个:
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
答案 4 :(得分:1)
我不是很熟悉Python,但是这里
for x, element in a_list:
if element[0] == 2:
a_list[x] = Roberto
您没有从列表中选择项目。 尝试
for x in a_list:
if x[0] == 2:
x[3] = Roberto
X选择列表中的元组,括号选择元组内的数据。