检查列表中的相等值并将其设置为0

时间:2018-07-12 19:00:49

标签: python python-3.x arraylist list-comprehension

我希望列表a中的元素在列表b中为零

a = [80,85,140,145]

b = list(range(200))

有没有一种方法可以代替手动编写:

b[80]=0

b[140]=0

因为我正在运行仿真,并且列表a中的值以及a的列表长度始终从一个仿真更改为另一个仿真,所以我想找到一种方法将列表a中的a的值自动设置为0

6 个答案:

答案 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]