首页 > 解决方案 > 我的交换功能在 python 中不起作用

问题描述

请大家,这个功能是为了交换列表中的一组项目,比如前 k 个项目与最后 k 个项目,但我不知道如何让这个函数工作

 def swap(L, k):
     L[len(L)-k:], L[:k] = L[:k], L[len(L)-k:]

但是当我用 doctest 运行它时,它失败了

swap([1, 2, 3, 4, 5, 6],2)

标签: pythonlist

解决方案


该函数完美运行,但您没有对您传入的列表的其他引用,因此它被丢弃。只需将列表保存为名称,然后再将其传入。

顺便说一句,这len(L)是不必要的。

def swap(L, k):
    """
    >>> lst = [1, 2, 3, 4, 5, 6]
    >>> swap(lst, 2)
    >>> lst
    [5, 6, 3, 4, 1, 2]
    """
    L[-k:], L[:k] = L[:k], L[-k:]

推荐阅读