我生成的數字組合,例如123
,使用此代碼生成具有repetetions組合在python
from itertools import combinations
for i in set(combinations('123',2)):
print(''.join(i))
我獲得這裏所期望的輸出
13
12
23
但是當我使用133
,我得到
13
33
但我想忽略重複,我想輸出爲
13
13
33
是否有任何替代方法?
我生成的數字組合,例如123
,使用此代碼生成具有repetetions組合在python
from itertools import combinations
for i in set(combinations('123',2)):
print(''.join(i))
我獲得這裏所期望的輸出
13
12
23
但是當我使用133
,我得到
13
33
但我想忽略重複,我想輸出爲
13
13
33
是否有任何替代方法?
set()
本質上,不允許有任何重複的元素。 set()
中的每個元素必須是唯一的。 Python文檔記錄了這一點:
Python還包含集合的數據類型。一組是無序集合,沒有重複元素。
重點煤礦。這就是爲什麼你沒有得到你的預期產出。當您致電set()
時,它會從您的組合中刪除重複13
。相反,只是通過組合物作爲迭代是:
from itertools import combinations
for i in combinations('133', 2): # no call to set()
print(''.join(i))
,輸出:
13
13
33
這很簡單。你應該使用列表(組合('123',2))而不是設置。設置減少相同的值。
或者根本* no *'list(..)','tuple(..)',...。 –
你說得對。他可以刪除該集合,for循環將正確迭代。 – Erez
有**不需要**來調用list()。事實上,如果你所做的只是循環,你想完全避免這種情況。 –
刪除'set'電話。那是什麼在減少'13 13 33'到'13 33' –
那麼不要調用'set()'?我不明白你爲什麼需要調用'set()'。 – kennytm
爲什麼如果你不想刪除repitition,你使用'set'? –