遍历多个列表以对每个列表应用相同的更改

Iterate through multiple lists to apply the same changes to each

举个例子,假设我有 3 个不同的列表:

lst1 = ['a', 'b', 'c']
lst2 = ['d', 'e', 'f', 'g']
lst3 = ['h', 'i']

而且我想对每个列表进行相同的更改,这样我仍然可以单独调用每个列表,但需要进行新的更改。所以假设我想向上面列表中的每个元素添加一个 'z' 。例如,我希望能够调用 lst3 并获得 lst3 = ['hz', 'iz'].

我尝试将每个列表分组为列表列表:lists = [lst1, lst2, lst3]

然后使用 [[(x + 'z') for x in z] for z in lsts] 应用我的更改。但这只是 returns 列表的列表。

我也试过使用 for 循环:

for each in lsts:
    each = [(x + 'z') for x in each] 

但是当我调用 lst3 时,似乎更改没有就地完成。

基本上我想得到以下输出,这样每个列表仍然用应用的更改分隔。对我如何实现这一目标有任何见解吗?

lst1 = ['az', 'bz', 'cz']
lst2 = ['dz', 'ez', 'fz', 'gz']
lst3 = ['hz', 'iz']

[[(x + "z") for x in z] for z in lists] 的结果分配回 lst1lst2lst3:

lst1 = ["a", "b", "c"]
lst2 = ["d", "e", "f", "g"]
lst3 = ["h", "i"]

lists = [lst1, lst2, lst3]

lst1, lst2, lst3 = [[(x + "z") for x in z] for z in lists]

print(lst1)
print(lst2)
print(lst3)

打印:

['az', 'bz', 'cz']
['dz', 'ez', 'fz', 'gz']
['hz', 'iz']

你的方向是对的:

for each in lists:
    each = [(x + 'z') for x in each] 

这里的问题是 each 是您最初处理的列表,但之后,each 是新列表。您正在更改变量 each 而不是原始列表。

这很容易通过使用切片赋值来解决:

for each in lists:
    each[:] = [(x + 'z') for x in each] 

换句话说,您要用新列表替换 eachcontests(这仍然是原始列表),这会得到结果你在找