我有点困惑于此:
a = [1,2,3,2,4,5]
b = [2,5]
我想比较两个列表并生成一个列表,其中包含与a相同的项目,但是b中没有出现的任何项目设置为0.有效输出将是:
c = [0,2,0,0,0,5]
# or
c = [0,0,0,2,0,5]
我事先不知道任何一个列表中的数字元素.
我试过循环但是
['0' for x in a if x not in b]
它删除了所有2的实例.我只想删除一次(它暂时在b中出现一次).我需要在上面的循环中添加一个条件来保持匹配的元素.
最佳答案 以下将有效:
a = [1,2,3,2,4,5]
b = [2, 5]
output = []
for x in a:
if x in b:
b.remove(x)
output.append(x)
else:
output.append(0)
或者对于单行,使用b.remove(x)返回None的事实:
a = [1,2,3,2,4,5]
b = {2, 5}
output = [(b.remove(x) or x) if x in b else 0 for x in a]