List Methods¶
难度: 2
时长: 20 min
List 方法¶
List 支持(不限于)以下 方法 [1]:
lst.append()lst1.extend(lst2)与lst1 + lst2的联系与区别lst.insert(): 如 [1, 2, 3 , 5, 6, 7] 的 3 后插入 4lst.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(), (=)
问题:
在
a = [1,2,3,4,5,6,7]后面添加成员8。在
a = [1,2,3,4,5,6,7]后面添加成员8, 9, 10。在
a = [1,2,3,4,5,6,7]最前面添加成员0。
注意: 在 LIST 不同位置新增成员时,计算开销可能显著不同。
删除元素¶
pop(), remove(), (del)
问题:
删除
a= [1,2,3,4,5,6,7]中的成员7。删除
a= [1,2,3,4,5,6,7]中的成员1。删除
a= [1,2,3,4,5,6,7]中的成员4。
注意: 在 LIST 不同位置删除成员时,计算开销可能显著不同。
查找元素¶
in, count(), index()
问题:
判断
1,3,5是否位于列表a = [1,2,3,4,5,6,7,1,2,3]中。计数
1,3,5分别在列表a = [1,2,3,4,5,6,7,1,2,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()
问题:
对
x = [3,1,2,6,5,4, 3]成员按从小到大顺序排序;对
x = [3,1,2,6,5,4, 3]成员按从大到小次序(逆序)排序 (试给出两种解法);
>>> x = [3,1,2,6,5,4, 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])
练习¶
请按最后一个字母排序
回到前面的例子,按文件(夹)倒序排名