- 1.1 列表的重复
list1=[1,2,3,4] print(list1*10)
- 1.2 列表的拼接
list2=[4,5,6,7] print(list1+list2)
- 1.3 成员运算:in、not in
成员运算结果是布尔值
print(3in[1,3,4])#→True print([3]in[1,3,4])#→False print([3]in[1,3,4,[3]])#→True
- 1.4 比较大小
a. 比较大小的元素必须是同类型的
b. 比较大小比较的是第一对不相等元素的大小(容器)
c. 数字正常比较大小
list1=[1,2,3,4] list2=[1,2,4,5] print(list1
- 练习:.有两个列表A和B,使用列表C来获取两个列表中公共的元素
例如: A = [1, ‘a’, 4, 90] B = [‘a’, 8, ‘j’, 1] --> C = [1, ‘a’]#方法一: A = [1, 'a', 4, 90] B = ['a', 8, 'j', 1] C = [] for i in A: for j in B: if i == j: C.append(j) print(C) #方法二: A = [1, 'a', 4, 90] B = ['a', 8, 'j', 1] C = [] for i in A: if j in B: C.append(j) print(C)2. 列表的方法和函数
- 2.1** max、min:获取同类型数据中最大、最小值**
num=[1,2,3,4] print(max(num)) print(min(num))
- 2.2 count:统计某个元素出现的个数
num=[1,2,3,4] print(num.count(4))#→1 print(num.count(5))#→0
- 2.3 sum:对列表元素求和
num=[1,2,3,4] print(sum(num))#→13
- 2.4 reverse:将列表倒序,返回值为None,直接修改列表本身
num = [1, 2, 3, 4] print(num.reverse()) print(num) print(num[::-1])#修改的非列表本身,需重新对列表元素赋值,使用append插入新元素
- 2.5 sorted、sort:将列表元素排序
a. sorted→将列表从小到大排序,生成新的列表
sorted:(列表,reverse=False)→从小到大排序
reverse:(列表,reverse=True)→从大到小排序b. sort→将列表从小到大排序,修改原列表。语法:
列表.sort(reverse=False);
列表.sort(reverse=True)num1=[23,78,0,90] print(sorted(num1))#将排序后的结果生成新的列表[0,23,78,90] print(sorted(num1,reverse=True#将排序后的结果,从小到大排序并生成新的列表[90,78,23,0] print(num1)#[23,78,0,90] print(num1.sort(reverse=False)) print(num1) print(num1.sort(reverse=True)) print(num1)
- 2.6 extend():将一个容器中的元素添加到列表中
num1=[23,78,0,90] num1.extend('abcde') #将序列拆分后添加到列表元素中 print(num1) #→[23,78,0,90,'a','b','c','d','e']num1=[23,78,0,90] num1.extend([1,2,3]) #将序列拆分后添加到列表元素中 print(num1) #→[23,78,0,90,'a','b','c','d','e',1,2,3]
- 2.7 index:查找元素
从左向右查找,找到元素立刻停止,返回下标;
如果查找元素不存在,报错num1=[23,78,0,90,'a','b','c','d','e','a',1,2,3] index1=num1.index('a') #制定从下标为5的位置开始查找 index1=num1.index('a',5) print(index1)
- 练习:不使用index(),查找第二个a的下标
num1 = [23, 78, 0, 90, 'a', 'b', 'c', 'd', 'e', 'a', 1, 2, 3] a_count = 0 for i in range(len(num1)): if num1[i] == 'a': a_count += 1#当a第一次出现 if a_count == 2:#当a第二次出现 print(i) break3. 变量去重:
- 3.1 有一个列表,要求去掉重复的人名
方法一:
names = ['张三', '李四', '大黄', '张三', '张三'] new_names = [] for i in names: if i not in new_names: new_names.append(i) print(new_names)方法二:
names = ['张三', '李四', '大黄', '张三', '张三'] for i in range(len(names) - 1, -1, -1): if names.count(names[i]) > 1: del names[i] print(names)方法三:
names = ['张三', '李四', '大黄', '张三', '张三'] index=0 while index<=len(names)-1: if names.count(names[index])>1: del names[index] else: index+=1 print(names)4. 列表的推导式
- 4.1 列表推导式(列表生成式)
作用:生成一个有元素的列表
for循环每执行一次,表达式就会将其生成的结果添加到列表中语法一:[表达式 for 变量 in 容器]
num=[i for i in range(1,101)] print(num) #→[1,2,3,....100]元素从1-100 num_2=[1 for_in range(10)] print(num_2) #→[1,1,1,1...]元素1显示10次append()适用于所有向列表中追加元素的操作
列表推导式在某些情况下可以替代append()
性能:列表推导式>append()
- 4.2 列表推导式和append性能对比
list1 = [] for i in range(1, 10000001): list1.append(i) end = time.time() print(f'append方法一共花费{end - start}秒') start = time.time() list2 = [i for i in range(1, 10000001)] end = time.time() print(f'列表推导式一共花费{end - start}秒')语法二:[表达式 for 变量 in 容器 if 条件]
for 循环执行一次,if分支判断一次,条件成立时表达式执行
list3 = [i for i in range(1, 101) if i % 2 == 0] print(list3)语法三:[表达式 for 变量 in 容器 for 变量 in 容器]
list4=[i for_in range(3) for i in range(1,11)] print(list4)
- 练习:孪生数,两个素数的差等于2。找出100以内所有孪生数
new_list = [] for i in range(2, 101): if i == 2: print('2是素数') new_list.append(2) else: # 判断[2,x-1]中有没有能将x整除的元素 for j in range(2, i): if i % j == 0: print(f'{i}不是素数') break else: print(f'{i}是素数') new_list.append(i) print(new_list) for x in range(len(new_list) - 1): if new_list[x + 1] - new_list[x]==2: print(f'{new_list[x]}和{new_list[x+1]}是孪生数')5. random:随机模块(俄罗斯轮盘、抽奖等)import random
5.1 randint(a,b)
从[a,b]闭区间中随机获取一个整数5.2 randrange()
约等于randint+rangeprint(random.randrange(1,4,2))
- 5.3 choice()
从容器中随机获取一个元素print(random.choice([1,2,3,4))
- 5.4 choices()
从容器中随机获取K个元素,有放回的抽取元素print(random.choices([1,2,3,4],k=3))
- 5.5 sample()
从有序容器中无放回的抽取k个元素print(random.sample([1,2,3,4],k=3))
- 5.6 shffule()
将有序容器随机打乱顺序,无返回值,修改序列本身list1=[1,2,3,4] print(random.shuffle(list1)) print(list1)
- 练习:课堂点名器
设置内幕
names = ['付永康', '廖宇', '罗梦佳', '夏博琳'] random.shuffle(names) while True: result = random.sample(names, k=1) if result == ['付永康']: break print(f'被抽中的同学为:{result}')使用PyQt/wxpython等GUI(图形可视化)进行可视化
使用pyinstall将程序封装成windows的exe可执行文件



