用Python排序数组元素

这是为入门程序设计的朋友写的一篇小文章.

要求

给定一个列表lst,按照其元素的绝对值大小对其排序。

用排序函数

lst.sort()lst 的内容排序

lst2 = sorted(lst)

但默认的排序函数会对整形数从小到大进行排序, 所以我们不能直接使用.

自定义排序函数

lst = lst.sort(key: lambda x: abs(x))

手动排序

  1. lhs = [1, 4, 2, 8, 5, 7]
  2. rhs = []
  3. lhs里取出最小的,放到rhs的末尾
    1. 看起来很好, 可是这要怎么实现呢?
  4. lhs空的时候,rhs有序
while (lhs != empty):
    minimal = min(lhs)
    lhs.remove(minimal)
    rhs.append(minimal)
print(rhs)

找到绝对值最小的元素

  1. 从头到尾看一遍lhs 内的内容,记下到目前为止看到的最小的minimal
  2. 如果新看到的iminimal更小,就更新minimali
  3. 看完lhs 的元素之后,minimal就是最小值
minimal = None
for i in lhs:
    if minimal is None or minimal < i:
        minimal = i

或者:

minimal = min(lhs, key = lambda x: abs(x))

备忘

文档

Python有很好读的文档, 推荐初学者细心阅读, 或者可以下载离线的文档浏览器(比如Dash或者Zeal)方便查找.

当然, 和所有词典一样, 文档的内容是循环引用的, 换句话说什么基础都没有的人是无法通过自主阅读文档学到更多的东西的. 这个时候可以参考一些好的教材或者课程.

调试、断言和格式化

初学者可以多利用IDE提供的调试器, 观察程序的执行流和数据的变化, 体会原因.

利用断言或者类似的信息可以帮助自己理清数据的变化过程, 也有助于写出正确的代码.

优良的IDE应当提供自动格式化代码的功能, 当然了, 因为是Python所以缩进并不能乱来.