Python 中列表的組合

Samyak Jain 2021年8月10日 2021年7月9日 Python Python List
  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

  • 在 Python 中將字典轉換為列表
  • 從 Python 列表中刪除某元素的所有出現
  • 在 Python 中從列表中刪除重複項
  • 如何在 Python 中獲取一個列表的平均值
  • Python 列表方法 append 和 extend 之間有什麼區別
  • 如何在 Python 中將列表轉換為字串