我有整數e
從0開始,我想有一個二進制列表b
其i
個元素是1,如果且僅當i
屬於的升序列表e
。二進制列表(Python)的
例如,如果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)
只是一個評論,Python3中不存在'xrange',除了解決方案很漂亮。 –
@ Ashwini謝謝!不幸的是,我不得不使用列表。 'e'不會是那麼龐大(最多150個元素,雖然後面我可能會嘗試大約400個元素),但是這會被多次調用(我正在運行一個遞歸算法,幾周以及我問的每一次迭代)。在我看來,你認爲每次把列表變成一個集合是有意義的嗎? – geo909
@ geo909'timeit' results:400列表中的搜索400需要12微秒,而一組只需要200納秒。 –