Python 中列表的組合

Samyak Jain 2023年1月30日
  1. 在 Python 中使用 itertools.combinations() 函式查詢列表的組合
  2. 在 Python 中使用 itertools.combinations_with_replacement() 函式查詢列表的組合
  3. 在 Python 中建立使用者定義的 powerset() 函式以查詢列表的組合
Python 中列表的組合

組合是一種確定元素集合中可能的排列數量的技術。在元素的組合中,元素以任意順序被選擇。

在本教程中,我們將在 Python 中找到列表元素的總組合。

在 Python 中使用 itertools.combinations() 函式查詢列表的組合

來自 itertools 模組的函式 combinations(list_name, x) 將列表名稱和數字 ‘x’ 作為引數,並返回一個元組列表,每個元組的長度為 ‘x’,其中包含一個元素的所有可能組合。包含其他元素的列表。

例如,

from itertools import combinations

A = [10, 5, "Hi"]
temp = combinations(A, 2)
for i in list(temp):
    print(i)

輸出:

(10, 5)
(10, 'Hi')
(5, 'Hi')

排序列表將按排序順序輸出組合元組。使用 combinations() 函式無法將列表中的一個元素與其自身組合。

在 Python 中使用 itertools.combinations_with_replacement() 函式查詢列表的組合

來自 itertools 模組的函式 combinations_with_replacement(list_name, x) 將列表名稱和數字 x 作為引數,並返回一個元組列表,每個元組的長度為 x,其中包含列表元素的所有可能組合。使用此功能可以將列表中的一個元素與其自身組合。

例如,

from itertools import combinations_with_replacement

A = [1, 5, "Hi"]
temp = combinations_with_replacement(A, 2)
for i in list(temp):
    print(i)

輸出:

(1, 1)
(1, 5)
(1, 'Hi')
(5, 5)
(5, 'Hi')
('Hi', 'Hi')

在 Python 中建立使用者定義的 powerset() 函式以查詢列表的組合

在數學中,任何集合的冪集是一個包含給定集合的所有可能子集以及一個空集的集合。集合 S = {2, 5, 10} 的冪集是 {{}, {2}, {5}, {10}, {2, 5}, {2, 10}, {5, 10}, {2, 5, 10}}。下面的函式 powerset() 用於遍歷列表的所有長度 ‘r’ 並列印列表元素的所有可能組合。

例如,

from itertools import chain, combinations


def powerset(list_name):
    s = list(list_name)
    return chain.from_iterable(combinations(s, r) for r in range(len(s) + 1))


A = [60, 7, "Hi"]
for x in powerset(A):
    print(x)

輸出:

()
(1,)
(5,)
('Hi',)
(1, 5)
(1, 'Hi')
(5, 'Hi')
(1, 5, 'Hi')

相關文章 - Python List