2012-07-30 221 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

相关问题