2012-07-30 13 views

回答

4

簡單地解決內部列表:

list1[0][0] = (0, 1) 

第一個索引操作[0]檢索外部列表中的第一個元素,給你再申請另一索引操作,以獲得包含列表的第一個元素。

>>> list1 = [['a', (1, 1)], ['a', (1, 2)], ['a', (1, 3)]] 
>>> list1[0][0] = (0, 1) 
>>> list1 
[[(0, 1), (1, 1)], ['a', (1, 2)], ['a', (1, 3)]] 
2
>>> my_list = [['a', (1, 1)], ['a', (1, 2)], ['a', (1, 3)]] 
>>> for sublist in my_list: 
     if sublist[0] == 'a': 
      sublist[0] = (0, 1) 
      break 


>>> my_list 
[[(0, 1), (1, 1)], ['a', (1, 2)], ['a', (1, 3)]] 
+0

我不如果你不想循環某些東西,那麼認爲使用循環結構是一個好主意。 – MaxPowers 2012-07-30 11:17:23

+0

@MaxPowers他說他想替換**第一個**''a'',所以我認爲他的意思是一般意義上的。 – jamylak 2012-07-30 11:18:17

+1

@MaxPowers:這個問題有足夠的含糊不清,以使這個答案也是正確的;我的答案是最明顯的正確答案*如果你知道第一個'a'所在的位置*。否則,jamylak通過搜索找到它是正確的。 – 2012-07-30 11:21:19

1

編輯:使這個回答這個問題(僅第一個「A」),並滿足不高興壓痕客戶 - 這裏的一些行上下的代碼:

for inner_list in list1: 
    for idx, elem in enumerate(inner_list): 
     if elem=='a': 
      inner_list[idx] = (0,1) 
      break 
+1

不,示例輸出顯示只有第一個'a'需要被替換。您的代碼會替換所有*出現的'a'。 – 2012-07-30 11:15:18

+0

我的錯誤 - 謝謝。 – 2012-07-30 11:17:30

+0

@GuyAdini添加'break'並修復pascal縮進! – jamylak 2012-07-30 11:21:42

相關問題