我有一个整数的升序列表e
,从0开始,我想有一个二进制列表b
,其i
-第个元素是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)
这可以通过列表理解来完成,如果
e
很大,最好先将其转换为set
:in
运算符返回True/False如果在列表中找到一个项,则可以使用int
将该bool转换为整数。请注意,对于列表,in
是O(N)
操作,因此如果e
较大,则将其转换为集合将提供更高的效率我不认为有一种内在的方法可以做到这一点。但是您可以使用List Comprehensions:
找点乐子
相关问题 更多 >
编程相关推荐