我希望列表a中的元素在列表b中为零
a = [80,85,140,145]
b = list(range(200))
有没有一种方法可以代替手动编写:
b[80]=0
b[140]=0
因为我正在运行仿真,并且列表a中的值以及a的列表长度始终从一个仿真更改为另一个仿真,所以我想找到一种方法将列表a中的a的值自动设置为0
答案 0 :(得分:1)
为什么不使用列表推导对创建进行过滤:
b = [x if x not in a else 0 for x in range(200)]
if x not in a
检查数字是否应该被过滤,如果要过滤,else 0
会将其设置为零。
答案 1 :(得分:0)
为什么不只是做一个简单的循环?天真的解决方案是只执行以下操作:
a = [8,5,1, 14]
b = list(range(20))
i = 0
while (i < len(a)):
b[a[i]] = 0
i = i+1
print(b)
答案 2 :(得分:0)
如果我正确理解了这个问题,这将b
中包含的索引处的a
中的项目替换为零:
for i in a:
b[i] = 0
答案 3 :(得分:0)
您可以为此使用列表理解。
c = [0 for x in b if x in a]
答案 4 :(得分:0)
您可以尝试以下方法:
for i in b:
if i in a:
b[i]=0
希望这会有所帮助:D
答案 5 :(得分:0)
简单的列表理解对此很有帮助:
a = [2, 4]
b = list(range(10))
[x if x not in a else 0 for x in b]
## [0, 1, 0, 3, 0, 5, 6, 7, 8, 9]