我想做一個簡單的遞歸函數,它將在Python中生成一個嵌套列表的列表。最終結果將代表一個淘汰賽錦標賽。我希望創建一個像這樣的列表將使我能夠輕鬆地生成我所需要的內容。這將在以後被用於爲比賽比賽創建模型。在Python中生成括號模型列表的算法
因此,如果有4名參加比賽:
[[1,4],[2,3]]
的7人賽:
[[1,[4,5]],[[2,7],[3,6]]]
或8名參與者的一場比賽:
[[[1,8],[4,5]],[[2,7],[3,6]]]
我的天堂」 t還有一個算法類(我希望這個類會最終幫助像這樣的事情),所以我不完全肯定如何解決這個問題。以下是我迄今的嘗試。
def decide_rounds(list_to_fill, player_nums):
if len(player_nums) < 3:
for num in player_nums:
list_to_fill.append(num)
return
left = []
decide_rounds(left, ??????) #Tried passing various things to these with no avail.
list_to_fill.append(left)
right = []
decide_rounds(right, ???????)
list_to_fill.append(right)
任何關於如何解決這個問題的幫助或解釋將不勝感激!
編輯:目前我打電話這樣的功能:
rounds = []
decide_rounds(rounds, range(1, size +1))
print rounds
嘗試:http://ideone.com/RVe8SQ – irrelephant
@irrelephant肯定這應該是一個答案,而不是評論? –
@irrelephant這是一個16位玩家:http://pastebin.com/sTT07iCj 如果按照正確的順序給出一個列表,您的原始答案可能會起作用,這可能可以通過某種簡單的函數來解決。 – computmaxer