Python交换功能

时间:2015-11-03 05:49:29

标签: python list swap

我很难在Python中表达这一点。

这是需要做什么的描述。

  

swap_cards :( int,int列表) - > NoneType

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

swap_cards([3, 2, 1, 4, 5, 6, 0], 6)
[0, 2, 1, 4, 5, 6, 3]`

我已经创建了2个示例,但我不知道如何启动函数体。

3 个答案:

答案 0 :(得分:1)

这里需要一些索引表示法:

>>> def swap_cards(L, n):
...     if len(L) == n + 1:
...         L[n], L[0] = L[0], L[n]
...         return L
...     L[n], L[n+1] = L[n+1], L[n]
...     return L
... 
>>> swap_cards([3, 2, 1, 4, 5, 6, 0], 5)
[3, 2, 1, 4, 5, 0, 6]
>>> swap_cards([3, 2, 1, 4, 5, 6, 0], 6)
[0, 2, 1, 4, 5, 6, 3]

答案 1 :(得分:1)

您可以使用元组交换习语a, b = b, a来交换变量,注意对于需要包裹索引的边缘情况index % len(seq)

<强>实施

def swap_cards(seq, index):
    indexes = (index, (index + 1)% len(seq))
    seq[indexes[0]], seq[indexes[1]] = seq[indexes[1]], seq[indexes[0]]
    return seq

示例

>>> swap_cards([3, 2, 1, 4, 5, 6, 0], 6)
[0, 2, 1, 4, 5, 6, 3]
>>> swap_cards([3, 2, 1, 4, 5, 6, 0], 5)
[3, 2, 1, 4, 5, 0, 6]

答案 2 :(得分:0)

def swap_cards(deck, index):
    if index in range(0, len(deck)):
        factor = (index + 1) % len(deck)
        aux = deck[factor]
        deck[factor] = deck[index]
        deck[index] = aux
        return deck
    else:
        return None

deck = [3, 2, 1, 4, 5, 6, 0]

new_deck = swap_cards(deck, 6)

print new_deck

输出:

[0, 2, 1, 4, 5, 6, 3]