[英]Python permutations in order
listA = ["A","B","C","D"]
由此,我只需要以下輸出:
["A","B","C"]
["B","C","D"]
["C","D","A"]
["D","A","B"]
我在這里查看了有關置換的各種問題,但是到目前為止,我還無法實現。 任何幫助將不勝感激。
另一種方式-蠻力,
def permutation(L):
for i in range(len(L)):
x = L[i:i+3]
length = len(x)
if length != 3:
x = x + L[:3-length]
print(x)
L = ["A","B","C","D"]
permutation(L)
您可以使用itertools.cycle
和itertools.islice
。
要獲得顯示的訂單(如@tobias_k建議):
>>> from itertools import cycle, islice
>>> listA = ["A","B","C","D"]
>>> [list(islice(cycle(listA), i, i+3)) for i in range(len(listA))]
[['A', 'B', 'C'], ['B', 'C', 'D'], ['C', 'D', 'A'], ['D', 'A', 'B']]
要獲取其他順序排序:
>>> it = cycle(listA)
>>> [list(islice(it,3)) for _ in range(len(listA))]
[['A', 'B', 'C'], ['D', 'A', 'B'], ['C', 'D', 'A'], ['B', 'C', 'D']]
感謝您的所有答復。 我收到了一個想在這里分享的朋友的另一個答案。 就像這樣
listA = ["A","B","C","D"]
listB = listA + [listA[0]] + [listA[1]]
catch = []
for i in range(len(listA)):
A = listB[i]
B = listB[i+1]
C = listB[i+2]
catch.append([A,B,C])
print catch
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.