Python学习笔记(十)推导式与公共操作
一、公共操作
1.运算符
运算符 | 描述 | 支持的容器类型 |
+ | 合并 | 字符串,列表,元组 |
* | 复制 | 字符串,列表,元组 |
in | 是否存在 | 字符串,列表,元组,字典,集合 |
not in | 是否不存在 | 字符串,列表,元组,字典,集合 |
1)合并
1 # 字符串 2 a = 'I' 3 b = 'love' 4 c = 'You' 5 print(a + " " + b + " " + c)
1 # 列表 2 li = [1, 2, 3, 4, 5] 3 li2 = [6, 7, 8, 9, 10] 4 print(li + li2) # 并不会改变元素中的值
1 # 元组 2 tup = (1, 2, 3, 4, 5) 3 tup2 = (6, 7, 8, 9, 10) 4 print(tup + tup2)
2)复制
1 # 字符串 2 print('放假了' * 10)
1 # 列表 2 li3 = [1, 2, 3] 3 print(li3 * 3) # 并不会改变元素中的值
1 # 元组 2 tup3 = (1, 2, 3) 3 print(tup3 * 3)
3)是否存在
1 li3 = [1, 2, 3] 2 if 1 in li3: 3 print('在的') 4 else: 5 print('不在')
2.公共方法
函数 | 描述 |
len() | 计算容器中元素个数 |
del | 删除 |
max() | 返回容器中元素最大值 |
min() | 返回容器中元素最小值 |
range(start,end,step) | 生成从start到end的数字,步长为step,供for循环使用 |
enumerate() | 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for循环中 |
sum() | 序列求和 |
zip() | 合并序列 |
1)max()
1 # 字符串 2 str1 = 'abcdefg' 3 print(max(str1)) # 比较的是ASCII码值 4 # 列表 5 list1 = [10, 20, 30, 40] 6 print(max(list1))
2)enumerate()
1 # enumerate(可遍历对象,start=0) 2 list1 = ['a', 'b', 'c', 'd', 'e'] 3 # 通过循环 得到每一个值的下标 4 # for循环 5 count = 0 6 for i in list1: 7 # print(i, count) 8 print(i, list1.index(i)) 9 count += 1 10 # while循环 11 # len() while 自增1 长度5 下标0~4 12 count = 0 13 while count < len(list1): 14 print(list1[count], count) 15 count += 1 16 # 使用enumerate 17 for index, value in enumerate(list1): 18 print(index, value) # 直接返回的是元组
3)zip()
- zip()函数用于将可迭代对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表
- 如果各个迭代器的元素个数不一致,则返回列表长度与最短对象相同
- 利用*号操作符,可以将元组解压为列表
1 a = [1, 2, 3] 2 b = [4, 5, 6] 3 c = [4, 5, 6, 7, 8] 4 d = {'name': 'yue', 'age': 18, 'gender': 1} 5 6 # 迭代器元素个数一致 7 zipped = zip(a, b) 8 print(zipped) 9 print(list(zipped))
1 a = [1, 2, 3] 2 b = [4, 5, 6] 3 c = [4, 5, 6, 7, 8] 4 d = {'name': 'yue', 'age': 18, 'gender': 1} 5 6 # 迭代器元素个数不一致 7 zipped = zip(a, c) 8 print(zipped) 9 print(list(zipped))
1 a = [1, 2, 3] 2 b = [4, 5, 6] 3 c = [4, 5, 6, 7, 8] 4 d = {'name': 'yue', 'age': 18, 'gender': 1} 5 zipped = zip(a, b) 6 7 # 解包 8 x1, x2 = list(zip(*zipped)) 9 print(x1, x2)
二、容器类型转换
1.转字符串
1 a = 1 2 print(str(a), type(str(a)))
2.转数值
1 a = '1' 2 print(int(a), type(int(a))) 3 4 a = 'asd' 5 print(int(a), type(int(a))) # ValueError: invalid literal for int() with base 10: '20:49:23' 6 7 a = '20:49:23' 8 print(int(a), type(int(a))) # ValueError: invalid literal for int() with base 10: '20:49:23' 9 print(float(a), type(float(a))) # ValueError: invalid literal for int() with base 10: '20:49:23'
3.转元组
1 list1 = [10, 20, 30, 40, 50, 20] 2 set1 = {100, 200, 300, 400, 500} 3 print(tuple(list1)) 4 print(tuple(set1))
4.转列表
1 tuple1 = ('a', 'b', 'c', 'd', 'e') 2 set1 = {100, 200, 300, 400, 500} 3 print(list(tuple1)) 4 print(list(set1))
5.转集合
1 list1 = [10, 20, 30, 40, 50] 2 tuple1 = ('a', 'b', 'c', 'd', 'e') 3 print(set(list1)) 4 print(set(tuple1))
6.总结
- 列表 元组 集合 三者之间可以相互转换
- int可以转字符串
- 字符串不可以直接转int 除了0123456789
7.扩展
pop()
1 set1 = {1, 2, 3, 4, 5, 6} 2 set2 = {'blue', 'red', 'green'} 3 print(set1.pop()) # 随机删除 如果是数值类型,会删除最小的那个 4 print(set2.pop()) # 如果是字符串类型的会随机删除 5 print(set1)
三、推导式
1.列表推导式
1 li = [] 2 for i in range(1, 11): # 拿到偶数 2 4 6 8 10 3 print(i) 4 if i % 2 == 0: 5 li.append(i) 6 print(li) 7 8 # 列表推导式 [表达式 for 变量 in 列表 if 条件] 9 new_li = [i for i in range(1, 11) if i % 2 == 0] # 对于简单我们可以使用列表推导式 10 # 对于复杂的 在读代码时并不能直接明白代码的意思 11 print(new_li)
2.字典推导式
1)字典创建:字典key是1-5数字,value是这个数字的2次方
1 # 字典推导式 {键:值 for 变量 in 字典.items() if 条件} 2 dict1 = {i: i ** 2 for i in range(1, 6)} 3 print(dict1)
2)两个列表变成一个字典
1 list1 = ['name', 'age', 'sex'] 2 list2 = ['Tom', 20, '男'] 3 dict1 = {list1[i]: list2[i] for i in range(len(list1))} # i对应值为0 1 2 作为下标去取值 4 5 # 另一种方式:通过循环 list1中的每一个值作为键 list2的每一个值作为值 前提是要有一个空字典 6 dict1 = {} 7 for i in range(len(list1)): 8 dict1[list1[i]] = list2[i] 9 print(dict1)
3)提取字典中的目标数据
1 computs = {'AUC': 268, 'HP': 125, 'DELL': 201, 'lenovo': 199, 'acer': 99} 2 count1 = {key: value for key, value in computs.items() if value >= 200} 3 print(count1)
注:先写for循环,再写for前表达式,代码是有逻辑性的,不是从头写到尾
3.集合推导式
1 # 集合推导式 {表达式 for 变量 in 列表 if 条件} 2 # 计算数字1,2,3的平方数 3 se = {i ** 2 for i in range(1, 4)} 4 print(se) 5 6 set1 = {x for x in 'abcdefg' if x not in 'abc'} 7 print(set1)
4.元组推导式
1 # 元组推导式 (表达式 for 变量 in 列表 if 条件) 2 a = (i for i in range(1, 10)) 3 print(tuple(a)) 4 print(list(a))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理