【发布时间】:2018-08-28 13:27:44
【问题描述】:
假设我们有一个列表和一个列表列表。我想替换后者的每个子列表中的所有值,以便将值 i 替换为前者的 i-th 位置中的值。例如:
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 中的最大值为6,则在任何@ 列表中都不会有任何大于6 的数字987654339@)。
我已经这样做了:
for this_l in l_of_l:
for i in range(len(this_l)):
this_l[i] = l[this_l[i]]
但我不太喜欢循环。有没有更 Pythonic 的方式来做到这一点?
【问题讨论】:
-
你需要一个完全递归的解决方案还是结构总是一个二维列表?
-
@MadPhysicist 该结构将始终与问题中的结构相同。