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)
这可以通过列表理解来完成,如果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.请注意,对于列表in是O(N)操作,因此如果e大,那么将其转换为集合将为您提供更高的效率.