2017-09-04 68 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'] 
相关问题