2015-11-15 24 views
-6

如何查找列表的最後一個數字,然後該號碼將卡頂的X號,並將其放置在底部例如cards = [1, 2, 3, 4, 27, 28, 5, 6, 7, 2],自2是最後一個號碼也將獲得第一2卡並將它放在底部之前,因此它會變成[3, 4, 27, 28, 5, 6, 7, 1, 2, 2])Python的交換和切片方法

我也有交換功能,但不知道如何,因爲它需要一個列表和指標,並通過與下一個數字指數掉期的列表中使用它。

還有當[-1]值爲3的一種特殊情況,將具有2的值交換,但不改變數

[1,2,3,4,5,6,1 ,2,3] - > [3,4,5,6,1,2,1,2,3]

def top_to_bottom(cards) 
    cards = cards.index(end) 

def swap_me(cards, index) 
    if index == len(cards) - 1: 
     index2 = 0 
    else: 
     index2 = index + 1 
    cards[index], cards[index2] = cards[index2], cards[index] 
+0

你好,歡迎來到StackOverflow。請花一些時間閱讀幫助頁面,尤其是名爲[「我可以詢問什麼主題?」(http://stackoverflow.com/help/on-topic)和[「我應該問什麼類型的問題避免問?「](http://stackoverflow.com/help/dont-ask)。更重要的是,請閱讀[Stack Overflow問題清單](http://meta.stackexchange.com/q/156810/204922)。您可能還需要了解[最小的,完整的和可驗證的例子(http://stackoverflow.com/help/mcve) – mnencia

回答

1

如果最後指數是有效的,即至少有那麼多卡移動陣列中,那麼你可以這樣做:

def move_cards(cards): 
    if cards[-1] == 3: 
     return cards[2:-1] + cards[-3:-1] + [3] 
    else: 
     return cards[cards[-1]:-1] + cards[0:cards[-1]] + [cards[-1]] 

move_cards([1, 2, 3, 4, 27, 28, 5, 6, 7, 2]) 
[3, 4, 27, 28, 5, 6, 7, 1, 2, 2] 

move_cards([1,2,3,4,5,6,1,2,3]) 
[3, 4, 5, 6, 1, 2, 1, 2, 3] 
+0

什麼,如果最後一個號碼是隨機的喜歡它可以是任何給定的列表 – itachi123

+1

然後,它會運行得。請嘗試瞭解代碼。 – Matthias

+0

如果我想爲它添加特殊情況,那麼當最終數字爲2時,它將切換值爲1的位置,因此 卡片[1,2,3,4,27,28,5,6,7,2] = [2,3,4,27,28,5,6,7,1,2] 其中即時猜測將有if語句像 如果2卡[-1] – itachi123