- 1. 列表运算
- 1.1列表重复
- 1.2列表相加
- 1.3 成员运算
- 1.4 比较大小
- 2. 列表函数
- 2.1 max min
- 2.2 count
- 2.3 reverse
- 2.4 sort
- 2.5 extend
- 2.6 index
- 3. 列表推导式
- 4. 随机模块
在列表中可进行与字符串类似的加法(+)和乘法(*)运算。
1.1列表重复将列表中的元素重复N次,产生一个新的列表。
list1 = [1, 2, 3, 4] print(list1 * 3) # [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]1.2列表相加
将两个列表中的元素合并在一起产生一个新的列表。
list1 = [1, 2, 3, 4] list2 = [4, 5, 6, 7] print(list1 + list2) # [1, 2, 3, 4, 4, 5, 6, 7]1.3 成员运算
in、not in判断列表中是否存在指定的元素,结果是布尔值。
print(3 in [1, 3, 4]) print([3] in [1, 3, 4]) print([3] in [1, 2, 3, [3]]) # True False True1.4 比较大小
比较大小的元素必须是同类型的,比较的是第一对不相等元素的大小。
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 = [] for i in A: if i in B: c.append(i) print(c) # [1, 'a']2. 列表函数 2.1 max minmin和max函数获取同类型数据中最大或者最小值。
num = [1, 2, 3, 4] print(max(num)) print(min(num)) # 4 # 12.2 count统计某个元素出现个数。
num = [1, 2, 3, 4] print(num.count(4)) # 12.3 reverse对当前列表顺序进行反转。 将列表倒序 返回值为none。直接修改列表本身。
print(num.reverse()) print(num) print(num[::-1]) # None # [4, 3, 2, 1] # [1, 2, 3, 4]2.4 sort将列表从小到大排序。
num1 = [23, 78, 0, 90] print(sorted(num1)) # [0, 23, 78, 90]2.5 extend将一个容器中的元素添加到列表中。
num1 = [23, 78, 0, 90] num1.extend('abcdea') num1.extend([1, 2, 3]) print(num1) # [23, 78, 0, 90, 'a', 'b', 'c', 'd', 'e', 'a', 1, 2, 3]2.6 index从左向右查找元素,返回下标。
num1 = [90, 78, 23, 0, 'a', 'b', 'c', 'd', 'e', 'a', 1, 2, 3] index1 = num1.index('a', 5) print(index1) # 9练习:不使用index(),查找第二个a的下标。
num1 = [90, 78, 23, 0, '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 if a_count == 2: print(i) # 9练习:要求去掉重复的人名
names = ['张三', '李四', '大黄', '张三','张三'] names_list =[] for i in names: if i not in names_list: names_list.append(i) print(names_list) # ['张三', '李四', '大黄']3. 列表推导式列表推导式可以快速生成一个列表,或者根据某个列表生成满足指定需求的列表。有3种语法。
语法1:[表达式 for 变量 in 容器]num = [i for i in range(1, 10)] print(num) # [1, 2, 3, 4, 5, 6, 7, 8, 9]num_2 = [1 for _ in range(10)] print(num_2) # [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]语法2:[表达式 for 变量 in 容器 if 条件]
list3 = [i for i in range(1, 101) if i % 2 == 0] print(list3) # [2, 4, 6, 8]语法3:[表示式 for 变量 in 容器 for 变量 in 容器]
list4 = [i for _ in range(2) for i in range(1, 4)] print(list4) # [1, 2, 3, 1, 2, 3]练习:孪生数:两个素数的差等于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]}是孪生数') 3和5是孪生数 5和7是孪生数 11和13是孪生数 17和19是孪生数 29和31是孪生数 41和43是孪生数 59和61是孪生数 71和73是孪生数4. 随机模块1.random返回0<=n<1之间的随机实数n。
2.randint(a,b) 从区间中随机获取一个整数。
3.randrange 约等于randint + range。
4.choice 从容器中随机获取一个元素。
5.sample 从有序容器中无放回的抽取K个元素。
6.shffule 将有序容器随机打乱顺序,无返回值,修改序列本身。import random list1 = [1, 2, 3, 4] print(random.shuffle(list1)) print(list1) # None [4, 2, 3, 1]练习:课堂点名器
names = ['付永康', '廖宇', '罗梦佳', '夏博琳'] random.shuffle(names) #设置内幕 while True: result = random.sample(names, k=1) if result == ['付永康']: break print(f'被抽中的同学为:{result}')



