簡體   English   中英

帶有OR語句的字符的可能組合列表

[英]List of possible combinations of characters with OR statement

我設法生成了一個字符'a','b'和'c'的所有可能組合的列表(下面的代碼)。 現在我想添加第四個字符,可以是“d”或“f”,但不能同時使用兩個字符。 我怎么能實現這個目標?

items = ['a', 'b', 'c']
from itertools import permutations
for p in permutations(items):
     print(p)

('a', 'b', 'c')
('a', 'c', 'b')
('b', 'a', 'c')
('b', 'c', 'a')
('c', 'a', 'b')
('c', 'b', 'a')

df創建了一個新列表items2 假設OP需要[a,b,c,d][a,b,c,f]所有組合

items1 = ['a', 'b', 'c']
items2 = ['d','f']
from itertools import permutations
for x in items2:
    for p in permutations(items1+[x]):
        print(p)

@Van Peer解決方案的變體。 您可以就地修改擴展列表:

from itertools import permutations
items = list('abc_')
for items[3] in 'dg':
    for p in permutations(items):
        print(p)

itertools.product適合以一種很好地概括的方式表示這些不同的組。 只需將獨占元素屬於傳遞給笛卡爾積的同一迭代。

例如,要獲取包含您要查找的項目的列表,

from itertools import chain, permutations, product

list(chain.from_iterable(map(permutations, product(*items, 'df'))))

# [('a', 'b', 'c', 'd'),
#  ('a', 'b', 'd', 'c'),
#  ('a', 'c', 'b', 'd'),
#  ('a', 'c', 'd', 'b'),
#  ('a', 'd', 'b', 'c'),
#  ('a', 'd', 'c', 'b'),
#  ('b', 'a', 'c', 'd'),
#  ('b', 'a', 'd', 'c'),
#  ('b', 'c', 'a', 'd'),
#  ('b', 'c', 'd', 'a'),
#  ('b', 'd', 'a', 'c'),
#  ('b', 'd', 'c', 'a'),
#  ('c', 'a', 'b', 'd'),
#  ('c', 'a', 'd', 'b'),
#  ...

比如這樣

items = ['a', 'b', 'c','d']
from itertools import permutations
for p in permutations(items):
     print(p)

items = ['a', 'b', 'c','f']
from itertools import permutations
for p in permutations(items):
     print(p)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM