List Methods

难度: 2

时长: 20 min

List 方法

List 支持(不限于)以下 方法 [1]

  • lst.append()

  • lst1.extend(lst2)lst1 + lst2 的联系与区别

  • lst.insert(): 如 [1, 2, 3 , 5, 6, 7] 的 3 后插入 4

  • lst.copy() 可以解决前面的赋值引用后修改副作用的问题

  • lst.count()

  • lst.index(): 比 in 更进一步,找出位置

  • lst.clear()del 的区别

  • lst.remove(x):删除第1个值为 x 的元素

  • lst.pop(): 将尾部元素弹出

  • lst.reverse(): 将更表元素前后反序重排

  • lst.sort()

最常用的方法是: append(), sort(), copy(), del

添加(多个)元素

append(), extend(), insert(), copy(), (=)

问题:

  1. a = [1,2,3,4,5,6,7] 后面添加成员 8

  2. a = [1,2,3,4,5,6,7] 后面添加成员 8, 9, 10

  3. a = [1,2,3,4,5,6,7] 最前面添加成员 0

注意: 在 LIST 不同位置新增成员时,计算开销可能显著不同。

删除元素

pop(), remove(), (del)

问题:

  1. 删除 a= [1,2,3,4,5,6,7] 中的成员 7

  2. 删除 a= [1,2,3,4,5,6,7] 中的成员 1

  3. 删除 a= [1,2,3,4,5,6,7] 中的成员 4

注意: 在 LIST 不同位置删除成员时,计算开销可能显著不同。

查找元素

in, count(), index()

问题:

  1. 判断 1, 3, 5 是否位于列表 a = [1,2,3,4,5,6,7,1,2,3] 中。

  2. 计数 1, 3, 5 分别在列表 a = [1,2,3,4,5,6,7,1,2,3] 中出现了几次。

  3. 寻找 1, 3, 5 分别在列表 a = [1,2,3,4,5,6,7,1,2,3] 中出现的位置。

以上三个问题如果不用 LIST 方法,而是自己定义函数,能不能写出来?

max, min, sort, len

在 python console 中执行下面的代码,观察结果。如果遇到错误,把错误的地方修改正确。

>>> numbers = [100, 34, 678]
>>> len(numbers)
>>> max(numbers)
>>> min(numbers)

>>> week=["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
>>> Max(week)
>>> Min(week)
>>> Max("Monday")
>>> week.sort()

说一说 len()max()min()sort() 的作用及特点。

成员排序 sort()

reverse(), sort()

问题:

  1. x = [3,1,2,6,5,4, 3] 成员按从小到大顺序排序;

  2. x = [3,1,2,6,5,4, 3] 成员按从大到小次序(逆序)排序 (试给出两种解法);

>>> x = [312654, 3]
>>> x.sort()

令人困惑的地方 sort

已知 x, 希望将 x 排序的结果放在 y。读下面的程序,解释引起错误的原因:

>>> x = [4, 6, 2, 1, 7, 9]
>>> y = x.sort()                # Don't do this!
>>> print(y)
None

以下哪种方法可行?

方法 1:

>>> x = [4, 6, 2, 1, 7, 9]
>>> y = x
>>> y.sort()
>>> print(y)
>>> print(x)

方法 2:

>>> x = [4, 6, 2, 1, 7, 9]
>>> y = x.copy()
>>> y.sort()

方法 3:

>>> x = [4, 6, 2, 1, 7, 9]
>>> y = sorted(x)

练习 : 将 'hello world' 中的所包含的全部字母按字母顺序排序

文件排序

希望得到 顺序排列的当前目录下的文件列表 ,以下两个代码片断哪个是正确 / 错误的?

即希望实现在 linux 系统中的 $ ls | sort 命令的效果(在 windows 中不一定有效)。 因为 Python 程序是跨平台的, 意味着一处在不同的系统中都是通用的。

# 1
import os
fls = os.listdir(".").sort()   # 链式操作

# 2
fls = os.listdir(".")
fls.sort()

错误分析:

Sort 高级排序

  • 逆序排序

  • 按长度排序

  • 按第3个字母排序

>>> x = ['aardvark', 'abalone', 'acme', 'add', 'aerate’]
>>> x.sort(reverse=True)
>>> x.sort(key=len)
>>> x.sort(key=lambda item:item[2])

练习

  1. 请按最后一个字母排序

  2. 回到前面的例子,按文件(夹)倒序排名