【问题标题】:Python swapping and slicing methodPython交换和切片方法
【发布时间】:2016-02-16 12:53:43
【问题描述】:

我如何找到列表的最后一个数字,然后该数字将取卡的前 x 个数字并将其放在底部,例如 cards = [1, 2, 3, 4, 27, 28, 5, 6, 7, 2],由于 2 是最后一个数字,它将获得前 2 个卡和把它放在它之前的底部,这样它就会变成[3, 4, 27, 28, 5, 6, 7, 1, 2, 2])

我也有交换功能,但不知道如何使用它,因为它需要一个列表和一个索引,并通过索引与下一个数字交换列表。

还有一种特殊情况,当[-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]

【问题讨论】:

标签: python slice swap


【解决方案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]

【讨论】:

  • 如果最后一个数字是随机的,就像它可以是任何给定的列表一样
  • 然后它也会运行。请尝试理解代码。
  • 如果我想为它添加特殊情况怎么办,所以当结束编号为 2 时,它会用值 1 切换位置,所以卡片 [1,2,3,4,27,28,5, 6,7,2] = [2,3,4,27,28,5,6,7,1,2] 我猜会有 if 语句,例如 if 2 is in cards[-1]
  • 添加特殊情况时它仍然会运行。当然,您必须编写代码来处理特殊情况。
  • 但是你怎么能只用替换值而不是数字本身来运行它,比如它怎么可能是 [2,3,4,27,28,5,6,7,1,2] [2,3,4,27,28,5,6,7,1,1] 因为它替换了值而不是数字
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-02
  • 2016-08-25
  • 2020-08-13
  • 2015-01-05
  • 1970-01-01
相关资源
最近更新 更多