簡體   English   中英

我如何在python 3中循環

[英]how do i do round-robin in python 3

我必須輪換清單。 我得到一個排序的列表,並且我必須在此排序列表的排列中獲得最少的對和最大的樹數,以作答。 它必須具有從最低到最高排序的不同數字。 例如:

MyList=[1, 1, 1, 2, 2, 2, 3, 3, 3, 3]

輸出必須是:

1 2 3
1 2 3
1 3
2 3

和為:

MyList=[1, 1, 1, 1, 1, 2, 3, 4, 5, 6]

輸出必須是:

1 2
1 3
1 4
1 5
1 6

我看到我可以用一種叫做循環的方法來做到這一點,但是我不知道怎么做。 謝謝您的幫助!

from itertools import cycle

A = [[1,2,3],[4,5,6],[7]]
B = [[8],[9,10,11],[12,13]]

for p in A:
   max1 = len(p) if  max1 <len(p) else max1

for p in B:
   max1 = len(p) if  max1 <len(p) else max1

i = len(A)
j = 0
C = []
list_num = cycle(k for k in range(i))

for x in list_num:
   j += 1
   if j == i*3:
       break
   if A[x]:
       C.append(A[x].pop(0))
   if B[x]:
       C.append(B[x].pop(0))

輸出:

[1, 8, 4, 9, 7, 12, 2, 5, 10, 13, 3, 6, 11]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM