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

时间:2014-01-28 15:14:48

标签: python list binary

我有一个从0开始的整数e的升序列表,我希望有一个二进制列表bi - 元素是1,当且仅当{{ 1}}属于i

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

您可以在下面找到我的代码。

我的问题是:是否有内置的python内容?如果没有,是我的 接近最有效率?

e

2 个答案:

答案 0 :(得分: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]

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

答案 1 :(得分:0)

我认为没有内置的方法可以做到这一点。但您可以使用List Comprehensions

a = [ 1 if i in e else 0 for i in range(1, e[-1]+1) ]

获得乐趣。