我想用list1
元素替换其索引存储在列表indices
中的list2
元素。以下是当前代码:
j=0
for idx in indices:
list1[idx] = list2[j]
j+=1
是否可以使用 lambda函数或列表理解为上述四行写一个单行?
修改
list1
包含浮点值
list2
包含浮点值
indices
包含0
和len(list1)
答案 0 :(得分:4)
# A test case
list1 = [0, 1, 2, 3, 4, 5, 6]
list2 = ['c', 'e', 'a']
indices = [2, 4, 0]
# Use conditional expressions
new_list = [list2[indices.index(idx)] if idx in indices else v for idx, v in enumerate(list1)] # idx2 = indices.index(idx), for list2
print(new_list)
# Output
['a', 1, 'c', 3, 'e', 5, 6]
答案 1 :(得分:3)
虽然它不是单行,但我认为这是一种更具可读性的替代方案:
for i, v in zip(indices, list2):
list1[i] = v
答案 2 :(得分:2)
它不是那么漂亮,但你可以像这样解决它:
map(list1.__setitem__, indices, list2)