遍历多个列表以对每个列表应用相同的更改
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]
的结果分配回 lst1
、lst2
、lst3
:
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]
换句话说,您要用新列表替换 each
的 contests(这仍然是原始列表),这会得到结果你在找
举个例子,假设我有 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]
的结果分配回 lst1
、lst2
、lst3
:
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]
换句话说,您要用新列表替换 each
的 contests(这仍然是原始列表),这会得到结果你在找