列表的遍历:
a = [10,20,30,40]
for obj in a: #obj 是临时变量名称,随意起名
print(obj)
执行结果:
复制列表所有的元素到新列表对象:
list1 = [30,40,50]
list2 = list1 #只是将list2也指向了列表对象。也就是说list1和list2持有地址是相同的,列表对象本身的元素并没有复制
print(id(list1)) #执行结果:1933292032520
print(id(list2)) #执行结果:1933292032520
我们可以通过如下简单的方式实现列表元素内容的复制:
list1 = [30,40,50]
list2 = [] + list1 #生成了新列表对象
print(id(list1)) #执行结果:2468481880584
print(id(list2)) #执行结果:2468486757256
后面会学习copy模块,使用浅复制或深复制实现我们的复制操作。
列表排序
修改原列表,不建新列表的排序:
import random #导入随机模块
a = [20,10,30,40]
print(a) #执行结果:[20, 10, 30, 40]
a.sort() #默认是升序排列
print(a) #执行结果:[10, 20, 30, 40]
a.sort(reverse=True) #降序排列
print(a) #执行结果:[40, 30, 20, 10]
random.shuffle(a) #打乱顺序
print(a) #执行结果:[10, 30, 20, 40]
建新列表排序:
可以通过内置函数 sorted() 进行排序,这个方法返回新列表,不对原列表做修改。
a = [20,10,30,40]
b = sorted(a) #默认升序排列
print(id(a)) #执行结果:2125432443400
print(id(b)) #执行结果:2125432443912
print(a) #执行结果:[20, 10, 30, 40]
print(b) #执行结果:[10, 20, 30, 40]
a.sort(reverse=True) #降序
print(a) #执行结果:[40, 30, 20, 10]
print(sorted(a,reverse=True)) #降序,执行结果:[40, 30, 20, 10]
reversed() 返回迭代器
内置函数 reversed() 也支持进行逆序排列,与列表对象 reverse() 方法不同的是,内置函数 reversed() 不对原列表做任何修改,只返回一个逆序排列的迭代器对象。
打印输出 c 时发现提示:list_reverseiterator 。也就是一个迭代对象。
同时,使用 list(c) 进行输出,发现只能使用一次。第一次输出了元素第二次为空。那是因为迭代对象在第一次时已经遍历了结果,第二次不能再使用。
max 和 min
用于返回列表中的最大值和最小值
a = [3,10,20,15,9]
print(max(a)) #执行结果:20
print(min(a)) #执行结果:3
sum
对数值型列表的所有元素进行求和操作,对非数值型列表运算则会报错。
a = [3,10,20,15,9]
print(sum(a)) #执行结果:57