【问题标题】:Check for equal values in lists and set them to 0检查列表中的相等值并将它们设置为 0
【发布时间】:2018-12-21 02:30:43
【问题描述】:
我希望列表 a 中的元素在列表 b 中为零
a = [80,85,140,145]
b = list(range(200))
有没有办法代替手动编写:
b[80]=0
b[140]=0
因为我正在运行模拟,并且列表 a 中的值以及 a 的列表长度总是从一个模拟更改为另一个模拟,我想找到一种方法来自动将列表 a 的值设置为列表 b 中的 0
【问题讨论】:
标签:
python
python-3.x
arraylist
list-comprehension
【解决方案1】:
为什么不使用列表推导来过滤创建:
b = [x if x not in a else 0 for x in range(200)]
if x not in a 检查该数字是否应该被过滤,如果要过滤,else 0 会将其设置为零。
【解决方案2】:
为什么不做一个简单的循环呢?天真的解决方案是执行以下操作:
a = [8,5,1, 14]
b = list(range(20))
i = 0
while (i < len(a)):
b[a[i]] = 0
i = i+1
print(b)
【解决方案3】:
如果我正确理解了这个问题,这会将b 中的项目替换为a 中包含的索引处的零:
for i in a:
b[i] = 0
【解决方案4】:
您可以为此使用列表推导。
c = [0 for x in b if x in a]
【解决方案5】:
你可以试试这个:
for i in b:
if i in a:
b[i]=0
希望这会有所帮助:D
【解决方案6】:
简单的列表理解对此很有用:
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]