【发布时间】:2020-03-29 01:41:21
【问题描述】:
我有两个列表:
a = [1, 1, 0, 1, 0, 0, 1]
b = [120, 131, 152, 143]
我想用列表“b”的元素替换列表“a”中的“1”,顺序很重要。我想要这样的东西
c = [120, 131, 0, 152, 0, 0, 143]
【问题讨论】:
-
嗨@Christian,请展示一下你到目前为止的尝试?
我有两个列表:
a = [1, 1, 0, 1, 0, 0, 1]
b = [120, 131, 152, 143]
我想用列表“b”的元素替换列表“a”中的“1”,顺序很重要。我想要这样的东西
c = [120, 131, 0, 152, 0, 0, 143]
【问题讨论】:
这是使用iter() 将b 转换为可迭代对象的一种方法。
例如:
a = [1, 1, 0, 1, 0, 0, 1]
b = iter([120, 131, 152, 143])
print([next(b) if val == 1 else val for val in a])
输出:
[120, 131, 0, 152, 0, 0, 143]
【讨论】:
一种更“传统”的方法,带有一个简单的循环:
a = [1, 1, 0, 1, 0, 0, 1]
b = [120, 131, 152, 143]
ans = []
i, j = 0, 0
while i < len(a):
if a[i] == 1:
ans.append(b[j])
j += 1
else:
ans.append(0)
i += 1
ans
=> [120, 131, 0, 152, 0, 0, 143]
【讨论】: