-1

所以我知道有预定义的功能,但我仍在练习基础知识。

我想对列表中的一堆整数从最小到最大进行排序。

我定义了这个函数:

def swap(a, b):
    c = a
    a = b
    b = c

    return a, b

这就是我正在尝试的:

def low_to_big_sort():   

    n = [2, 1, 63, 6, 8, 5, 12]
    swap(n[0], n[1])

    return n

返回与定义相同的列表。我的代码有什么问题?

4

2 回答 2

2

您的swap函数什么都不做,因为它只是在不更改列表的情况下交换名称。

您可以通过三种方式解决此问题:

  • 使用元组解包的规范 Python 交换:

    n[0], n[1] = n[1], n[0]
    
  • 实际上使用来自的返回值swap

    n[0], n[1] = swap(n[0], n[1])
    
  • 传入一个数组和一对要交换的索引:

    def swapind(l, a, b):
        l[a], l[b] = l[b], l[a]
    
    swapind(n, 0, 1)
    

第一种方式是最可取的(“Pythonic”),因为很清楚该操作在做什么。

于 2013-08-24T21:52:28.337 回答
0

因为你需要自己修改list...

def swap(L, a, b):
    L[a], L[b] = L[b], L[a]

n = [2, 1, 63, 6, 8, 5, 12]
swap(n, 0, 1)
于 2013-08-24T21:52:53.067 回答