修改列表中的元组

时间:2012-03-13 05:21:27

标签: python list tuples

我为提出这么简单的问题而道歉,但我尝试搜索这个网站,但仍未找到有效的答案。

我有以下列表,其中包含元组:

[('1', '1', '1', '1'), ('1', '1', '1', '2'), ('1', '1', '1', '3'),
 ('1', '1', '1', '4'), ('1', '1', '2', '2'), ('1', '1', '2', '3'),
 ('1', '1', '2', '4'), ('1', '1', '3', '3'), ('1', '1', '3', '4'),
 ('1', '1', '4', '4'), ('1', '2', '2', '2'), ('1', '2', '2', '3'),
 ('1', '2', '2', '4'), ('1', '2', '3', '3'), ('1', '2', '3', '4'),
 ('1', '2', '4', '4'), ('1', '3', '3', '3'), ('1', '3', '3', '4'),
 ('1', '3', '4', '4'), ('1', '4', '4', '4'), ('2', '2', '2', '2'),
 ('2', '2', '2', '3'), ('2', '2', '2', '4'), ('2', '2', '3', '3'),
 ('2', '2', '3', '4'), ('2', '2', '4', '4'), ('2', '3', '3', '3'),
 ('2', '3', '3', '4'), ('2', '3', '4', '4'), ('2', '4', '4', '4'),
 ('3', '3', '3', '3'), ('3', '3', '3', '4'), ('3', '3', '4', '4'),
 ('3', '4', '4', '4'), ('4', '4', '4', '4')]

我想用另一个名为'List1'的列表替换所有'1'。然后我想将所有的2更改为List2和3s更改为List3等....最后我想要这样的事情:

[[[List1StuffA, List1StuffB, List1StuffC], [List1StuffA, List1StuffB, List1StuffC],
  [List1StuffA, List1StuffB, List1StuffC], [List1StuffA, List1StuffB, List1StuffC]),
 ([List1StuffA, List1StuffB, List1StuffC], [List1StuffA, List1StuffB, List1StuffC],
  [List1StuffA, List1StuffB, List1StuffC], [List2StuffA, List2StuffB, List2StuffC]),
 ([List1StuffA, List1StuffB, List1StuffC], [List1StuffA, List1StuffB, List1StuffC],
  [List1StuffA, List1StuffB, List1StuffC], [List3StuffA, List3StuffB, List3StuffC]),
 ([List1StuffA, List1StuffB, List1StuffC], [List1StuffA, List1StuffB, List1StuffC],
  [List1StuffA, List1StuffB, List1StuffC], [List4StuffA, List4StuffB, List4StuffC]),
 ...]

List1 = [List1StuffA, List1StuffB, List1StuffC]

我似乎无法绕过“无法修改元组”位,我似乎无法将较大列表中的每个元组元素更改为列表本身(并让它保持这种方式)。

我尝试过这样的事情:

for item in OverallList:
    item = list(item)
    for x in item:
        x = x.replace('1', List1)
        x = x.replace('2', List2)
        x = x.replace('3', List3)
        x = x.replace('4', List4)

但是当我打印出整体列表时,没有任何改变。

任何帮助都会受到赞赏,如果我错过了一个可行的答案(或错误地应用了答案),我很抱歉。

3 个答案:

答案 0 :(得分:1)

您需要将item重新插入OverallList

for idx, item in enumerate(OverallList):
    item = [{'1':List1, '2':List2, '3':List3, '4':List4}[k] for k in item]
    OverallList[idx] = item

答案 1 :(得分:0)

在for循环中执行item = list(item)时,您将失去对OverallList的引用。这就是为什么item的任何更改都没有反映在OverallList中。同样适用于x中的item

答案 2 :(得分:0)

我认为当你把'item = list(item)'放在你不再引用元组时 - 'item'是一个列表,它是从仍在列表中的现有元组创建的。尝试在循环中打印'x',你应该有一个包含你期望内容的列表。如果是这种情况,您需要做的就是删除元组,更改元组,然后将其重新插入。