列表的遍历:

a = [10,20,30,40]
for obj in a:      #obj 是临时变量名称,随意起名
    print(obj)

执行结果:Python学习(16)|列表_遍历_排序_max_min_sum-LMLPHP

复制列表所有的元素到新列表对象:

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() 不对原列表做任何修改,只返回一个逆序排列的迭代器对象。

Python学习(16)|列表_遍历_排序_max_min_sum-LMLPHP

打印输出 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
02-19 04:34