Python2205-day05课后总结
大纲:
列表相关方法
列表补充
如何删除重复元素
列表推导式
1、列表相关方法
-
sum、max、min、count
numlist = [12, 13, 14, 15, 90]
-
sum:计算数字列表中所有元素的和
print(sum(numlist)) #结果:144
-
max/min:求数字列表中最大或最小值
numlist = [12, 13, 14, 15, 90] print(max(numlist)) #90 print(min(numlist)) #12
-
count:统计某个元素在列表中出现的次数
print(numlist.count(11)) #0,因为numlist列表中没有11,故得出结果为0
-
-
sort()、sorted()
numlist1 = [10, 30, 50, 100, -100, 5]
-
sort():默认将列表从小到大排序,直接修改列表本身,sort返回值为空值
print(numlist1.sort()) #None print(numlist1) #[-100, 5, 10, 30, 50, 100]
-
sorted():默认将列表从小到大排序,sorted不修改列表本身,返回排好序的列表结果
print('sorted', sorted(numlist1)) #sorted [-100, 5, 10, 30, 50, 100] print('sorted', numlist1) #sorted [10, 30, 50, 100, -100, 5]
-
-
reverse():将列表倒序输出
numlist1 = [10, 30, 50, 100, -100, 5] print('reverse', numlist1.reverse()) #reverse None print('reverse', numlist1) #reverse [5, -100, 100, 50, 30, 10]
-
切片将列表倒序
numlist1 = [10, 30, 50, 100, -100, 5] print(numlist1[::-1]) #[5, -100, 100, 50, 30, 10]
-
index:查找某个元素出现的位置,从左向右找,找到此元素第一次出现的位置后直接停止查找
list1 = ['abc', 1, 2, 3, 4, 1] print(list1.index(1)) #1
-
index还可以直接执行从哪个位置开始查找
print(list1.index(1, list1.index(1) + 1)) #5
-
-
思考:如果从list1中查找第二个1出现的位置:
-
1、先查找第一个1的位置
numIndex = list1.index(1)
-
2、将没有第一个1的列表切出来
list2 = list1[numIndex + 1:]
-
3、找新列表中的第一个1(相当于原列表中的第一个1),再将去掉的部分长度补回来
-
print(list2.index(1) + len(list1[0:(numIndex + 1)])) #5
-
2、列表补充
-
<1>成员运算:in 、not in
list1 = [1, 2, 3, 'abc', [1, 2, 3]] print(1 in list1) print([3] not in list1) #True
-
<2>列表比较大小
-
有序容器比较大小
- a、两个容器的数据类型保持一致
- b、比较的第一对不相同元素的大小,并且这两个元素的数据类型要一致
- c、两个有序容器找不到第一对不相同元素,谁长谁大
list2 = [1, 2, 4, [1, 2, 4]] list3 = [1, 2, 4, [1, 2, 3]] print(list3 > list2) #True
-
3、如何删除重复元素
name_list = ['张三', '李四', '王五', '李四', '王五', '王五', '张三']
-
通常写法:
for i in name_list: if name_list.count(i) > 1: # print(f'{i}是重复的') name_list.remove(i) print(name_list) #['李四', '李四', '王五', '张三'],李四重复,没删掉,故此方法行不通
-
(1)使用间接删除
name_list = ['张三', '李四', '王五', '李四', '王五', '王五', '张三'] names = [] for i in name_list: if i not in names: names.append(i) print(names) #['张三', '李四', '王五']
-
(2)控制下标
name_list = ['张三', '李四', '王五', '李四', '王五', '王五', '张三'] index_ = 0 while index_ < len(name_list): if name_list.count(name_list[index_]) > 1: del name_list[index_] else: index_ += 1 print(name_list) #['李四', '王五', '张三']
-
(3)倒序删除
name_list = ['张三', '李四', '王五', '李四', '王五', '王五', '张三'] for i in range(len(name_list) - 1, -1, -1): if name_list.count(name_list[i]) > 1: del name_list[i] print(name_list) #['张三', '李四', '王五']
列表推导式
-
作用:在创建列表的同时向列表中添加元素
-
意义:
-
1、简化代码,提高代码的可读性。
-
2、在某些场景下可以使用列表推导式代替append
-
3、性能比较:列表推导式性能>append
-
-
语法一:[表达式 for 变量 in 容器]
- 表达式就是向列表中添加的元素
numlist = [] for i in range(1, 101): numlist.append(i) print(numlist) #这是在没有学习推导式之前使用的代码 numlist2 = [i for i in range(1, 101)] print(numlist2) #学习推导式之后使用的代码,明显比之前的要便捷很多
-
语法二:[表达式 for 变量 in 容器 if 条件]
- for循环执行一次,如果条件成立,表达式的结果添加到列表中
numlist3 = [i for i in range(0, 101) if i % 5 == 0] print(numlist3) #输出的列表,里面的元素是5的倍数
-
语法三:[表达式 for 变量1 in 容器1 for 变量2 in 容器2]
-
第一个for循环执行1次,第二个for循环执行N次,第二个for循环每执行一次,表达式的结果就向列表中添加一次。
list1 = [f'{index} * {column} = {index * column}' for index in range(1, 10) for column in range(1, index + 1)] print(list1) #输出九九乘法表
-