带有OR语句的字符的可能组合列表

时间:2017-11-14 19:29:00

标签: python

我设法生成了一个字符'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')

4 个答案:

答案 0 :(得分:3)

items2d创建了一个新列表f。假设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)

答案 1 :(得分:2)

@Van Peer解决方案的变体。您可以就地修改扩展列表:

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

答案 2 :(得分:2)

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'),
#  ...

答案 3 :(得分:1)

像这样举例

Dim intUserInput As Integer
Dim outPut As Integer
intUserInput = TextBox1.Text
Try

    If intUserInput >= 1 Then
        outPut = intUserInput * ComboBox1.SelectedItem
        ListBox1.Items.Add(outPut)
        TextBox1.Clear()
        ComboBox1.SelectedIndex = ComboBox1.SelectedIndex + 1
    End If


Catch ex As Exception
    MessageBox.Show(ex.Message)
    MessageBox.Show("Error")
End Try