对于列表 p 中出现在列表 s 中的项目第一次出现,附加 1,对于其他出现和 s 中的其他项目附加 0

Dap*_*ire 6 python loops list python-2.7 python-3.x

我希望此代码为列表 p 中列表 s 中出现的项目的第一次出现附加 1,并为 s 中的其他出现和其他项目附加 0。

这是我当前的代码,它为所有出现的情况附加 1,我希望它仅在第一次出现时附加 1。请帮忙

s = [20, 39, 0, 87, 13, 0, 23, 56, 12, 13]
p = [0, 13]
bin = []

for i in s:
        if i in p:        
            bin.append(1)      
        else:
            bin.append(0)
   

print(bin)

# current result [0, 0, 1, 0, 1, 1, 0, 0, 0, 1]
# excepted result [0, 0, 1, 0, 1, 0, 0, 0, 0, 0]
Run Code Online (Sandbox Code Playgroud)

And*_*ely 5

最简单的解决方案是从列表中删除该项目p(如果找到):

s = [20, 39, 0, 87, 13, 0, 23, 56, 12, 13]
p = [0, 13]

out = []
for i in s:
    if i in p:
        out.append(1)
        p.remove(i)
    else:
        out.append(0)

print(out)
Run Code Online (Sandbox Code Playgroud)

印刷:

[0, 0, 1, 0, 1, 0, 0, 0, 0, 0]
Run Code Online (Sandbox Code Playgroud)