Python Swap Function

你离开我真会死。 提交于 2019-12-02 13:40:38

Sounds like some index notation is required here:

>>> 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]

You can use the tuple swap idiom a, b = b, ato swap the variable noting that for edge cases you need to wrap around the index index % len(seq)

Implementation

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

Example

>>> 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]
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

Output:

[0, 2, 1, 4, 5, 6, 3]
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!