假設我有一些串列 [0,1,2]。然后我想回傳這個串列的所有 n 長“排列”。例如,如果 n=5,我應該列舉 3^5 個選項:
[0,0,0,0,0]
[0,0,0,0,1]
[0,0,0,0,2]
[0,0,0,1,0]
...
[2,2,2,2,2]
我一直在瀏覽類似這樣的關于堆疊溢位的帖子,并嘗試了 itertools 庫中的許多函式,包括組合、combinations_with_repeats、排列等,但這些都不會給我想要的輸出。自己撰寫代碼并不難,但我覺得 5 重嵌套回圈在我的代碼中看起來會非常混亂,如果存在,我寧愿使用另一個庫中的實作。我想我只是在錯誤的地方搜索。謝謝
uj5u.com熱心網友回復:
Python 的itertools.product將完全滿足您的需求。
import sys
from itertools import product
DIGITS = (0, 1, 2)
N = int(sys.argv[1])
for tup in product(DIGITS, repeat = N):
print(tup)
uj5u.com熱心網友回復:
您還可以避免 sort_list 步驟。這樣做只是為了使訂購看起來像您原來的問題。并使用 pandas df 讓它看起來像你的問題。
lst = [0, 1, 2]
n = 5
def permutations(lst, n):
if n == 0:
return [[]]
return [pre [i] for i in lst for pre in permutations(lst, n - 1)]
# sort list of lists
def sort_list(lst):
for i in range(len(lst)):
lst[i].sort()
return lst
import pandas as pd
print(pd.DataFrame(sort_list(permutations(lst, n))))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/434653.html
上一篇:修改DFS演算法以檢查圖中的頂點
下一篇:索引16超出長度16的范圍