2017-09-04 13 views
1

GCSEコンピュータサイエンスの 'Card Trick'練習プログラムをプログラムしようとしていますが、私は1つの機能についていません。Python 3で別のリストにアイテムを追加する方法

私は3つの他の配列を含む配列を持っています.3つの配列内の項目を取り出し、別のリストに移動したいと思います。

これは私が持っていると私はそれが動作しない理由はわからないコードです:old_pilesがあることだった場合

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 

[['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'] 
関連する問題