學習筆記3 python中的排列與組合

2021-10-03 21:04:31 字數 2452 閱讀 9081

2. 組合

需求1:

將兩個列表進行排列,有多少種結果?

接受多個可迭代物件

解決1:

from itertools import product

li =[1

,2,3

]result =

list

(product(li, li)

)print

(result)

注意:這種方法可以為相同或不同的多個個列表

結果1:

[(1

,1),

(1,2

),(1

,3),

(2,1

),(2

,2),

(2,3

),(3

,1),

(3,2

),(3

,3)]

延伸1:

接受乙個可迭代物件和長度引數。

如果進行排列的是自身,則可以使用引數repeat,僅對自身任意個列表進行排列:

from itertools import product

li =[1

,2,3

]result =

list

(product(li, repeat=2)

)print

(result)

# 結果同上

注意:這裡都為相同的多個列表

解決2:

輸入乙個可迭代引數,如:列表、元組等。每個元素會被當做整體來進行排列

from itertools import permutations

li =[1

,2,3

]result =

list

(permutations(li)

)print

(result)

注意:這裡可以省去長度引數,不是必須的。當省去時,為全排列。

結果2:

[(1

,2,3

),(1

,3,2

),(2

,1,3

),(2

,3,1

),(3

,1,2

),(3

,2,1

)]

需求1:

將兩個列表進行組合,有多少種結果?

補充1:

組合與排列不同,組合無序,所以無需將兩個列表按照先後循序來進行排列,而是可以直接合併兩個表,根據需要的結果長度來規定長度,進行組合。

解決1:

接受可迭代物件

from itertools import combinations

li1 =[1

,2,3

]li2 =[2

]li_sum = li1 + li2

result =

list

(combinations(li_sum,3)

)print

(result)

這裡對乙個總表進行組合即可,後面指定引數表示結果長度

注意1:該方法必須要有指定長度引數

結果1:

[(1

,2,3

),(1

,2,2

),(1

,3,2

),(2

,3,2

)]

同上,但是包含自身和自身元素的組合。即有重複元素。

from itertools import combinations_with_replacement

li =[1

,2,3

]result =

list

(combinations_with_replacement(li,2)

)print

(result)

注意2:該方法同樣必須要有指定長度引數

結果2:

[(1

,1),

(1,2

),(1

,3),

(2,2

),(2

,3),

(3,3

)]

python學習筆記3 python讀寫檔案

一 檔案的開啟模式 1 開啟檔案 1 f open d a.txt w 第乙個引數是檔案的路徑,如果只寫檔案的名字,預設是在當前執行目錄下的檔案 第二個引數是檔案的開啟模式 這種方式開啟檔案,在使用完了之後一定要記得,關閉檔案 f.close 2 with open d a.txt w as f 這...

3,Python中的序列

2 元組 字典列表屬於可變序列,可以任意改變其中的元素。a 19.8,5 jacub true,5 列表可以包含各種型別的元素 b len a b的值是列表a的長度 元素的數量 print a 2 列印列表a中索引為2的元素 print a.index 19.8 列印列表a中 19.8 這個元素的索...

Python學習總結3 Python基礎

一 介紹 python採用縮排方式 print absolute value of an integer a 100 if a 0 print a else print a 其中,為注釋。縮減用4個空格表示。其他每一行都是乙個語句,當語句以冒號 結尾時,縮排的語句視為 塊。二 資料型別 2.整數 包...