Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检查列表中的值是否相等,并将其设置为0_Python_Python 3.x_Arraylist_List Comprehension - Fatal编程技术网

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

Python 检查列表中的值是否相等,并将其设置为0,python,python-3.x,arraylist,list-comprehension,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的列表长度总是在从一个模拟更改为另一个模拟,我想找到一种方法,自动将列表b中列表a的值设置为0,为什么不在创建时使用列表理解进行过滤: a = [80,85,140,145] b = list(range(200)) b = [x if x not in a el

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

a = [80,85,140,145]

b = list(range(200))
是否有一种方法可以代替手动编写:

b[80]=0

b[140]=0

因为我正在运行模拟,列表a中的值以及a的列表长度总是在从一个模拟更改为另一个模拟,我想找到一种方法,自动将列表b中列表a的值设置为0,为什么不在创建时使用列表理解进行过滤:

a = [80,85,140,145]

b = list(range(200))
b = [x if x not in a else 0 for x in range(200)]

如果x不在a
中,则检查数字是否假定未被过滤,如果要过滤,则
否则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)
a=[8,5,1,14]
b=列表(范围(20))
i=0
而(i
如果我正确理解了问题,这将在
a
中包含的索引处将
b
中的项目替换为零:

for i in a:
    b[i] = 0

您可以使用列表来理解这一点

c = [0 for x in b if x in a]
您可以尝试以下方法:

for i in b:
    if i in a:
        b[i]=0

希望这有帮助:D

简单的列表理解有助于:

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]