[英]Genereating all possible combinations of array (without repetition) in python
[英]Combinations without repetition (python)
我想做以下組合:
string.1 string.1
string.2 string.2 string.1
string.3 string.3 string.2 string.1
string.4 string.4 string.3 string.2
string.4 string.1
每個項目都應該與其他項目組合,但順序無關緊要,即string.4 string.1
與string.1 string.4
相同。 此外,每行最多應有 4 個組合。 第一列中的每個項目都與其他列中的每個項目組合在一起。 例如在第 2 行,有string.2-string.2
& string.2-string.1
的組合。
這是我的代碼:
import itertools
BLOCKS=4
DB="string"
getiter = lambda : itertools.chain( range(1, BLOCKS+1))
for i in getiter():
for j in range(1, BLOCKS, 4):
emit = f"{DB}.{i}"
for k in range(4):
if j + k > BLOCKS:
break
emit += " {}.{}".format(DB, j+k)
print(emit)
這是我目前的 output:
string.1 string.1 string.2 string.3 string.4
string.2 string.1 string.2 string.3 string.4
string.3 string.1 string.2 string.3 string.4
string.4 string.1 string.2 string.3 string.4
在這里,有些組合是多余的。 我該如何擺脫這些?
也許是這樣的:
import itertools
BLOCKS=4
DB="string"
getiter = lambda : itertools.chain( range(1, BLOCKS+1))
for i in getiter():
emit = f"{DB}.{i}"
for k in range(1, BLOCKS+1):
if k > BLOCKS: break
else if k == i: continue #<========== Added
emit += " {}.{}".format(DB, k)
print(emit)
(請注意,第二個循環(j)似乎沒用,所以我確實刪除了它)
Output:
string.1 string.2 string.3 string.4
string.2 string.1 string.3 string.4
string.3 string.1 string.2 string.4
string.4 string.1 string.2 string.3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.