升序整数列表索引的二进制列表(Python)

geo*_*909 0 python binary list

我有一个e从0开始的整数升序列表,我希望有一个二进制列表,b其中i-th元素为1,当且仅当i属于e.

例如,如果e=[0,1,3,6],那么这个二进制列表应该是[1,1,0,1,0,0,1],其中第一个1是因为0在e,第二个1是因为1在e,第三个0是因为2不在e,依此类推.

你可以在下面找到我的代码.

我的问题是: python中是否内置了一些内容?如果没有,我的方法是最有效的吗?

def list2bin(e):
b=[1]
j=1
for i in range(1, e[-1]+1):
    if i==e[j]:
        b.append(1)
        j+=1
    else:
        b.append(0)     
return(b)
Run Code Online (Sandbox Code Playgroud)

Ash*_*ary 6

这可以通过列表理解来完成,如果e是巨大的,那么最好将其转换为set第一个:

>>> e = [0, 1, 3, 6]
>>> [int(i in e) for i in xrange(0, e[-1]+1)]
[1, 1, 0, 1, 0, 0, 1]
Run Code Online (Sandbox Code Playgroud)

in如果一个项目在列表中找到运算符返回true/false,那么可以将bool转换为使用整数int.请注意,对于列表inO(N)操作,因此如果e大,那么将其转换为集合将为您提供更高的效率.