迭代出元素的排列組合

2021-10-23 15:33:03 字數 1516 閱讀 3895

# 排列組合

# 如果你想要找出某個序列的排列組合情況,有以下三個函式可以供你使用:

from itertools import permutations, combinations, combinations_with_replacement

my_items = ['c1', 'c2', 'c3']

# permutations(item, length) 排列成長為length的所有可能情況,並以元組形式返回

# 考慮元素位置

def my_permutations():

for m in permutations(my_items, 3):

print(m, end=' ')

else:

print()

# combinations(items, lenght) 區別於permutations, 已經在序列的會被剔除

# 如my_items 如果length設為3,則僅產生一種結果:('c1', 'c2', 'c3')

# 不考慮元素之間的順序

def my_combinations():

for m in combinations(my_items, 2):

print(m, end=' ')

else:

print()

# combinations_with_replacement(item, length) 允許元素進行多次選擇,即重複選擇

# 不考慮元素之間的順序

def my_combinations_with_replacement():

for m in combinations_with_replacement(my_items, 3):

print(m, end=' ')

else:

print()

if __name__ == '__main__':

my_permutations()

print('-'*20)

my_combinations()

print('-' * 20)

my_combinations_with_replacement()

('c1', 'c2', 'c3')  ('c1', 'c3', 'c2')  ('c2', 'c1', 'c3')  ('c2', 'c3', 'c1')  ('c3', 'c1', 'c2')  ('c3', 'c2', 'c1')  

--------------------

('c1', 'c2') ('c1', 'c3') ('c2', 'c3') 

--------------------

('c1', 'c1', 'c1') ('c1', 'c1', 'c2') ('c1', 'c1', 'c3') ('c1', 'c2', 'c2') ('c1', 'c2', 'c3') ('c1', 'c3', 'c3') ('c2', 'c2', 'c2') ('c2', 'c2', 'c3')

('c2', 'c3', 'c3') ('c3', 'c3', 'c3') 

python 迭代器 排列組合

概述 迭代器是訪問集合元素的一種方式。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。可迭代物件 迭代器提供了乙個統一的訪問集合的介面。只要是實現了 iter 或getitem 方法的物件,就可以使用迭代器進行訪問。序列 字串 列表 元組 非序列 字典 檔案...

c 排列組合排序 排列組合 組合數專題

書接上回,本期正男老師將帶大家梳理排列組合中組合數的相關考點,組合數考點可以細分為4類,分別為 分類數數問題 分組排序問題 塗色問題以及插棍問題。近六年高考真題中,組合數考點共涉及5道。組合數專題高考真題分布 組合數的定義以及公式如下圖所示。組合數定義 分類數數問題與排列問題中的窮舉問題相似,但分類...

排列組合實現

演算法 與網際網路 組合演算法 本程式的思路是開乙個陣列,其下標表示1到m個數,陣列元素的值為1表示其下標 代表的數被選中,為0則沒選中。首先初始化,將陣列前n個元素置1,表示第乙個組合為前n個數。然後從左到右掃瞄陣列元素值的 10 組合,找到第乙個 10 組合後將其變為 01 組合,同時將其左邊的...