5

私はこのコードを持っています

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

しかし、これは機能しませんでした。どうすればよいか分かりますか?

ありがとう!

4

5 に答える 5

6

これはそれを行います:

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')]
于 2013-03-07T01:57:13.937 に答える
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)
于 2013-03-07T01:40:59.323 に答える
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))
于 2013-03-07T01:42:13.160 に答える
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
于 2013-03-07T01:42:39.647 に答える
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 はリスト内のタプルを選択し、括弧はタプル内のデータを選択します。

于 2013-03-07T01:47:23.817 に答える