所以我知道有预定义的功能,但我仍在练习基础知识。
我想在列表中从最低到最大数字排序一堆整数。
我定义了这个功能:
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
返回与定义相同的列表。 我的代码出了什么问题?
答案 0 :(得分:2)
您的swap
函数无效,因为它只是在不更改列表的情况下交换名称。
您可以通过三种方式解决此问题:
使用元组解包进行规范Python交换:
n[0], n[1] = n[1], n[0]
实际上使用swap
的返回值:
n[0], n[1] = swap(n[0], n[1])
将数组和一对索引传递给swap:
def swapind(l, a, b):
l[a], l[b] = l[b], l[a]
swapind(n, 0, 1)
第一种方式是最优选的(“Pythonic”),因为很清楚操作是做什么的。
答案 1 :(得分: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)