对于这个问题,我有一个名为List的列表,其中包含元组。

List = [
    ("foo", "bar", 1, 0),
    ("foo", "bar", 3, 1),
    ("foo", "bar", 1, 2)
]


在每个子列表的索引位置2(列表中的第三项)中,我需要替换为另一个列表中的相应项。

References = ["zero", "one", "two", "three"]


预期输出将是以下项的新List

List = [
    ("foo", "bar", "one", 0),
    ("foo", "bar", "three", 1),
    ("foo", "bar", "one", 2)
]


请注意,列表的其他部分上还有整数,但这些整数保持不变。

我当前的代码替换了我不想要的所有整数实例:

for r in range(0, len(References)):
    for i in List:
        List[List.index(i)] = [References[t] if x==t else x for x in i]


问:我该怎么做?提前致谢。

编辑:我的代码有误-List内部是元组,而不是列表。

最佳答案

元组是不可变的,这意味着您无法更新或更改元组元素的值。您可以执行以下任一过程:

1)您可以采用部分现有元组来创建新元组,如下所示:

List_One = [
    ("foo", "bar", 1, 0),
    ("foo", "bar", 3, 1),
    ("foo", "bar", 1, 2)
]

List_Two = []

References = ["zero", "one", "two", "three"]

for i in List_One:
    tup = (i[0], i[1], References[i[2]], i[3])
    List_Two.append(tup)

print(List_Two)


2)您可以将元组转换为列表,根据需要进行更改,然后将列表更改回元组。

List = [
    ("foo", "bar", 1, 0),
    ("foo", "bar", 3, 1),
    ("foo", "bar", 1, 2)
]

References = ["zero", "one", "two", "three"]

for i in range(len(List)):
    List[i] = list(List[i])

for i in List:
    i[2] = References[i[2]]

for i in range(len(List)):
    List[i] = tuple(List[i])

print(List)

关于python - 遍历列表并替换某个索引中的实例?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54840864/

10-12 20:25
查看更多