所以我會盡我所能解釋我在找什么,目前我有一個 100 個專案串列,我想使用一套模式反復洗牌,首先檢查模式是否最終會讓我回到我開始的地方和2 將每個回圈的結果列印到文本檔案中。
所以使用 3 項串列作為我的示例 [a,b,c] 和隨機模式 [3 1 2],其中第 3 項成為第一個。第一個專案成為第二個專案,第二個專案成為第三個回圈將生成以下模式
[a,b,c]
[3,1,2]
[出租車]
[b,c,a]
[a,b,c]
但我現在有一個清單,有 100 個專案,我需要為我想測驗的幾種不同模式找到每一個安排。
有沒有人知道在python中做到這一點的方法。
uj5u.com熱心網友回復:
如果您的串列包含數字型別,您可以使用 numpy高級整數索引:
import numpy as np
original_list=[1,2,3]
numpy_array = np.array(original_list)
pattern = [2,1,0]
print(numpy_array[pattern])
>>> array([3, 2, 1])
uj5u.com熱心網友回復:
def rearrange(pattern : list,L:list):
new_list = []
for i in pattern :
new_list.append(L[i-1])
return new_list
print(rearrange([3,1,2],['a','b','c']))
輸出 :
['c', 'a', 'b']
uj5u.com熱心網友回復:
您可以像下面function這樣function多次定義和呼叫它:
>>> def func(lst, ptr):
... return [lst[idx-1] for idx in ptr]
>>> lst = ['a','b','c']
>>> ptr = [3,1,2]
>>> for _ in range(5):
... lst = func(lst, ptr)
... print(lst)
['c', 'a', 'b']
['b', 'c', 'a']
['a', 'b', 'c']
['c', 'a', 'b']
['b', 'c', 'a']
uj5u.com熱心網友回復:
Itertools 可能正是您所需要的。
import itertools
p = itertools.permutations(['a','b','c', 'd'])
list(p)
輸出: [('a', 'b', 'c', 'd'), ('a', 'b', 'd', 'c'), ('a', 'c', 'b ', 'd'), ('a', 'c', 'd', 'b'), ('a', 'd', 'b', 'c'), ('a', 'd ', 'c', 'b'), ('b', 'a', 'c', 'd'), ('b', 'a', 'd', 'c'), ('b ', 'c', 'a', 'd'), ('b', 'c', 'd', 'a'), ('b', 'd', 'a', 'c') , ('b', 'd', 'c', 'a'), ('c', 'a', 'b', 'd'), ('c', 'a', 'd', 'b'), ('c', 'b', 'a', 'd'), ('c', 'b', 'd','a'), ('c', 'd', 'a', 'b'), ('c', 'd', 'b', 'a'), ('d', 'a', 'b', 'c'), ('d', 'a', 'c', 'b'), ('d', 'b', 'a', 'c'), ('d', 'b', 'c', 'a'), ('d', 'c', 'a', 'b'), ('d', 'c', 'b', 'a')]c', 'b', 'a')]c', 'b', 'a')]
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/329727.html
上一篇:如何通過迭代方法或管道運算子從嵌套資料集中洗掉例外值行
下一篇:Python迭代排除型別不是bool、float、int或不是NoneType(TypeError:'NoneType'物件不可迭代)
