2017-09-04 69 views
1

我正在嘗試爲GCSE計算機科學編寫'Card Trick'練習程序,但我被困在一個函數中。如何在Python中追加一個列表中的項目到另一個列表3

我有一個數組,其中包含3個其他數組,我想把這3個數組中的項目移動到另一個列表中。

這是我的代碼,我不知道爲什麼它不工作:

def remake_list(old_piles,mid_pile) : 
    print(old_piles) 
    newlist = [] 
    if mid_pile == 1 : 
     newlist.extend(old_piles[1]) 
     newlist.extend(old_piles[0]) 
     newlist.extend(old_piles[2]) 
    if mid_pile == 2 : 
     newlist.extend(old_piles[0]) 
     newlist.extend(old_piles[1]) 
     newlist.extend(old_piles[2]) 
    if mid_pile == 3 : 
     newlist.extend(old_piles[0]) 
     newlist.extend(old_piles[2]) 
     newlist.extend(old_piles[1]) 
    return newlist 

如果old_piles是成爲:

[['S8', 'S6', 'H3', 'DK', 'D8', 'C8', 'D2'], ['SQ', ',H2', 'S2', 'S4', 'D7', 'CK', 'SJ'], ['CA', 'D3', 'DQ', 'DJ', 'C9', 'H10', 'S7']] 

而且mid_pile爲3,如何我會得到這個工作?

+0

對我來說,它看起來像你的代碼是做你想要什麼,你有什麼期望的輸出? – Akavall

回答

1

你可以用列表添加:

def remake_list(old_piles,mid_pile) : 
    print(old_piles) 
    newlist = [] 
    if mid_pile == 1 : 
     newlist = old_piles[1] + old_piles[0] + old_piles[2] 
    if mid_pile == 2 : 
     newlist = old_piles[0] + old_piles[1] + old_piles[2] 
    if mid_pile == 3 : 
     newlist = old_piles[0] + old_piles[2] + old_piles[1] 
    return newlist 
1

使用itertools.chain

import itertools 

deck = [['S8', 'S6', 'H3', 'DK', 'D8', 'C8', 'D2'], ['SQ', ',H2', 'S2', 'S4', 'D7', 'CK', 'SJ'], ['CA', 'D3', 'DQ', 'DJ', 'C9', 'H10', 'S7']] 

print(list(itertools.chain(*deck))) 
>> ['S8', 'S6', 'H3', 'DK', 'D8', 'C8', 'D2', 'SQ', ',H2', 'S2', 'S4', 'D7', 'CK', 'SJ', 'CA', 'D3', 'DQ', 'DJ', 'C9', 'H10', 'S7'] 
相關問題