列表的运算
1.列表的重复
list1 = [1, 2, 3, 4]
print(list1 * 10)
2.列表的拼接
list2 = [4, 5, 6, 7]
print(list1 + list2)
3.成员运算:in、not in
成员运算结果是布尔值
print(3 in [1, 3, 4])#---->True
print([3] in [1, 3, 4])#---->False
print([3] in [1, 2, 3, [3]])#---->True
4.比较大小
a.比较大小的元素必须是同类型的
b.比较大小比较的是第一对不相等元素的大小(容器)
c.数字正常比较大小
list1 = [1, 2, 3, 4]
list2 = [1, 2, 4, 5]
#list1<list2
list1 = [1, 2, '3', 4]
list2 = [1, 2, '4', 5]
#list1<list2
list1 = ['1', 2, '3', 4]
list2 = [1, 2, '4', 5]
# TypeError: '<' not supported between instances of 'str' and 'int'
练习:有两个列表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:
if i in B:
c.append(i)
print(c)
A = [1, 'a', 4, 90]
B = ['a', 8, 'j', 1]
c = []
for i in A:
for j in B:
if i == j:
c.append(i)
print(c)
列表的方法和函数
1.max、min - 获取同类型数据中最大、最小值
num = [1, 2, 3, 4]
print(max(num))
print(min(num))
2.count - 统计某个元素出现个数
print(num.count(4))
3.sum - 求和
print(sum(num))
4.reverse - 将列表倒序,返回值为None,直接修改列表本身
num=[1, 2, 3, 4]
print(num.reverse())
#返回值为none
print(num)
#结果为[4,3,2,1]
print(num[::-1])
#[1,2,3,4]
5.sorted:将列表从小到大排序,生成新的列表
sorted(列表,reverse=False) -> 从小到大排序
reverse = True -> 从大到小排序
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))#None
print(num1)#[0,23,78,90]
print(num1.sort(reverse=True))#None
print(num1)#[90,78,23,0]
6.extend() - 将一个容器中的元素添加到列表中
num1.extend('abcdea')
num1.extend([1, 2, 3])
print(num1)#[90,78,23,0,'a','b','c','d','e','a',1,2,3]
7.index - 查找元素
从左向右查找,找到元素立刻停止,返回下标
如果查找元素不存在,报错
index1 = num1.index('a')
指定从下标为5的位置开始查找
index1 = num1.index('a', 5)
print(index1)
练习:不使用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)
break
练习:有一个列表,要求去掉重复的人名
例如:names = [‘张三’, ‘李四’, ‘大黄’, ‘张三’,‘张三’]
-> names = [‘张三’, ‘李四’, ‘大黄’]
方法一:
print('方法一:')
names = ['张三', '李四', '大黄', '张三', '张三']
name_list = []
for i in names:
if i not in name_list:
name_list.append(i)
print(name_list)
方法二:
print('方法二')
names = ['张三', '李四', '大黄', '张三', '张三', '李四', '李四']
for i in range(len(names) - 1, -1, -1):
print(i, names)
if names.count(names[i]) > 1:
del names[i]
print(names)
方法三:
print('方法三')
names = ['张三', '李四', '大黄', '张三', '张三', '李四', '李四']
index = 0
while index <= len(names) - 1:
if names.count(names[index]) > 1:
del names[index]
else:
index += 1
print(names)
列表推导式(列表生成式)
作用:生成一个有元素的列表。
语法1:[表达式 for 变量 in 容器]
for循环每执行一次,表达式就会将其生成的结果添加到列表中。
num = [i for i in range(1, 101)]
print(num)
num_2 = [1 for _ in range(10)]
print(num_2)
append()适用于所有向列表中追加元素的操作;
列表推导式在某些情况下可以替代append()
性能:列表推导式 > append()
列表推导式和append性能对比
import time
start = time.time()
list1 = []
for i in range(1, 100000001):
list1.append(i)
end = time.time()
print(f'append方法一共花费{end - start}秒')
start = time.time()
list2 = [i for i in range(1, 100000001)]
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:
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]}是孪生数'
随即模块
1.random:随机模块。
俄罗斯轮盘、抽奖等。
import random
randint(a,b) -> 从[a,b]闭区间中随机获取一个整数。
randrange( ) -> 约等于randint + range
print(random.randrange(1, 4, 2))
2.choice( ) -> 从容器中随机获取一个元素
print(random.choice([1, 2, 3, 4]))
choices() -> 从容器中随机获取K个元素,有放回的抽取元素。
print(random.choices([1, 2, 3, 4], k=5))
3.sample() -> 从有序容器中无放回的抽取K个元素
print(random.sample([1, 2, 3, 4], k=3))
4.shffule() -> 将有序容器随机打乱顺序,无返回值,修改序列本身。
list1 = [1, 2, 3, 4]
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可执行文件