gpt4 book ai didi

python - 根据另一个列表中的位置替换列表列表中的所有值

转载 作者:太空狗 更新时间:2023-10-30 02:52:47 31 4
gpt4 key购买 nike

假设我们有一个列表,以及一个列表列表。我想替换后者每个子列表中的所有值,以便值 i 被前者第 i 位置的值替换。例如:

l = [4,2,1,0,3]
l_of_l = [[0,3],[4,1,2,3],[2,4]]

desired_output = [[4,0],[3,2,1,0],[1,3]]

所有 0 都被替换为 l[0],等于 4。所有 1 都被替换为 l[1],等于 2。等等。

所有的数字在l中只出现一次,并且所有介于最大值和最小值之间的数字都在那里。即,如果最小值为 0,最大值为 6,则该列表将是 list(range(7))。此外,l_of_l 包含的列表中出现的所有数字都出现在 l 中(即,如果 l 中的最大值为 6l_of_l 的任何列表中不会有任何大于 6 的数字。

我这样做过:

for this_l in l_of_l:
for i in range(len(this_l)):
this_l[i] = l[this_l[i]]

但我不太喜欢循环。有没有更像 Python 的方法来做到这一点?

最佳答案

您可以使用列表理解:

l = [4,2,1,0,3]
l_of_l = [[0,3],[4,1,2,3],[2,4]]
result = [[l[b] for b in i] for i in l_of_l]

输出:

[[4, 0], [3, 2, 1, 0], [1, 3]]

或者,如果您希望完全避免显式循环,您可以使用 map:

result = list(map(lambda x:list(map(lambda c:l[c], x)), l_of_l))

输出:

[[4, 0], [3, 2, 1, 0], [1, 3]]

尽管后者不如列表推导式那么清晰。

关于python - 根据另一个列表中的位置替换列表列表中的所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52059116/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com