Python基础语法系列导航
1.第一篇——开发环境、变量、数据类型、运算符介绍
2.第二篇——流程控制、循环、字符串介绍
3.第三篇——列表和元组介绍
4.第四篇——字典和集合介绍
5.第五篇——部分数据类型公共方法、生成式介绍
6.第六篇——函数介绍
7.第七篇——文件操作介绍
Python基础语法【第五篇】—部分数据类型公共方法、生成式介绍
前言
Python基础语法笔记,记录一下学习过程
提示:以下是本篇文章正文内容,下面案例可供参考
10.部分数据类型公共方法
1.运算符
| 运算符 | 描述 | 支持的容器类型 |
|---|---|---|
| + | 合并 | 字符串、列表、元组 |
| * | 复制 | 字符串、列表、元组 |
| in | 元素是否存在 | 字符串、列表、元组、字典、集合 |
| not in | 元素是否不存在 | 字符串、列表、元组、字典、集合 |
1.1 +
# 1. 字符串
str1 = 'aa'
str2 = 'bb'
str3 = str1 + str2
print(str3) # aabb
# 2. 列表
list1 = [1, 2]
list2 = [10, 20]
list3 = list1 + list2
print(list3) # [1, 2, 10, 20]
# 3. 元组
t1 = (1, 2)
t2 = (10, 20)
t3 = t1 + t2
print(t3) # (10, 20, 100, 200)
1.2 *
# 1. 字符串
print('-' * 10) # ----------
# 2. 列表
list1 = ['hello']
print(list1 * 4) # ['hello', 'hello', 'hello', 'hello']
# 3. 元组
t1 = ('world',)
print(t1 * 4) # ('world', 'world', 'world', 'world')
1.3 in或not in
# 1. 字符串
print('a' in 'abcd') # True
print('a' not in 'abcd') # False
# 2. 列表
list1 = ['a', 'b', 'c', 'd']
print('a' in list1) # True
print('a' not in list1) # False
# 3. 元组
t1 = ('a', 'b', 'c', 'd')
print('aa' in t1) # False
print('aa' not in t1) # True
# 4. 字典(只能判断key存在与否)
dict = {'Name': 'Runoob', 'Age': 7}
print('Age' in dict) # True
print('Age' not in dict) # False
# 5. 集合
s1 = {10, 20, 30, 40, 50}
print(10 in s1) # True
print(10 not in s1) # False
2.公共方法
| 函数 | 描述 |
|---|---|
| len() | 计算容器中元素个数 |
| del 或 del() | 删除 |
| max() | 返回容器中元素最大值 |
| min() | 返回容器中元素最小值 |
| range(start, end, step) | 生成从start到end的数字,步长为 step,供for循环使用 |
| enumerate() | 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。 |
2.1 len()
# 1. 字符串
str1 = 'abcdefg'
print(len(str1)) # 7
# 2. 列表
list1 = [10, 20, 30, 40]
print(len(list1)) # 4
# 3. 元组
t1 = (10, 20, 30, 40, 50)
print(len(t1)) # 5
# 4. 集合
s1 = {10, 20, 30}
print(len(s1)) # 3
# 5. 字典
dict1 = {'name': 'Rose', 'age': 18}
print(len(dict1)) # 2
2.2 del()
## 删除变量名皆删除该内存
# 1. 字符串
str1 = 'abcdefg'
del str1
print(str1) # NameError: name 'str1' is not defined
# 2. 列表
list1 = [10, 20, 30, 40]
del(list1[0])
print(list1) # [20, 30, 40]
del list1
print(list1) # NameError: name 'list1' is not defined
# 3. 元组(元组虽然有下标,但不能指定删除)
t1 = (10, 20, 30, 40, 50)
del t1
print(t1) # NameError: name 't1' is not defined
# 4. 字典(字典虽然没有下标,但可以指定键删除)
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
del dict1['gender']
print(dict1) # 结果:{'name': 'Tom', 'age': 20}
del(dict1)
print(dict1) # 结果:NameError: name 'dict1' is not defined
# 5. 集合(集合没有下标,不能根据下标删除,但可以remove()指定值删除)
s1 = {10, 20, 30}
del s1
print(s1) # NameError: name 's1' is not defined
2.3 max()
# 1. 字符串
str1 = 'abcdefg'
print(max(str1)) # g, 根据ASCII码对比
# 2. 列表
list1 = [10, 20, 30, 40]
print(max(list1)) # 40
# 3. 元组
t1 = (10, 20, 30, 40, 50)
print(max(t1)) # 50
# 4. 字典 (用键来对比大小)
dict1 = {'B': 'Tom', 'A': 20, 'C': '男'}
print(max(dict1)) # C, 根据ASCII码对比
# 5. 集合
s1 = {10, 20, 30}
print(max(s1)) # 30
2.4 min()
# 1. 字符串
str1 = 'abcdefg'
print(min(str1)) # a, 根据ASCII码对比
# 2. 列表
list1 = [10, 20, 30, 40]
print(min(list1)) # 10
# 3. 元组
t1 = (10, 20, 30, 40, 50)
print(min(t1)) # 10
# 4. 字典 (用键来对比大小)
dict1 = {'B': 'Tom', 'A': 20, 'C': '男'}
print(min(dict1)) # A, 根据ASCII码对比
# 5. 集合
s1 = {10, 20, 30}
print(min(s1)) # 10
2.5 range(start, end, step)
# 1 2 3 4 5 6 7 8 9
for i in range(1, 10, 1):
print(i)
# 1 3 5 7 9
for i in range(1, 10, 2):
print(i)
# 0 1 2 3 4 5 6 7 8 9
for i in range(10):
print(i)
注意:range()生成的序列不包含end数字。
2.6 enumerate()
语法:
enumerate(可遍历对象, start=0)注意:start参数用来设置遍历数据的下标的起始值,默认为0。
举例:
list1 = ['a', 'b', 'c', 'd', 'e'] """ (0, 'a') (1, 'b') (2, 'c') (3, 'd') (4, 'e') """ for i in enumerate(list1): print(i) """ 下标是1, 对应的字符是a 下标是2, 对应的字符是b 下标是3, 对应的字符是c 下标是4, 对应的字符是d 下标是5, 对应的字符是e """ for index, char in enumerate(list1, start=1): print(f'下标是{index}, 对应的字符是{char}')
3.容器类型转换
3.1 容器定义
容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in或not in关键字判断元素是否包含在容器中。
- 容器特点:
- 容器是一种可以包含其他类型对象(如列表、元组、字典等)作为元素的对象。
- 容器仅仅只是用来存放数据的,我们平常看到的 A = [1,2,3,4]等等,好像我们可以直接从列表这个容器中取出元素,但事实上容器并不提供这种能力,而是可迭代对象赋予了容器这种能力。
- 常见容器:列表、元组、字典、集合
3.2 tuple()
作用:将某个序列转换成元组
举例:
list1 = [10, 20, 30, 40, 50, 20] set1 = {100, 200, 300, 400, 500} dict1 = {'A':2, 'B':3} print(tuple(list1)) # (10, 20, 30, 40, 50, 20) print(tuple(set1)) # (400, 100, 500, 200, 300) print(tuple(dict)) # ('A', 'B'), 只返回键!
3.3 list()
作用:将某个序列转换成列表
举例:
tuple1 = ('a', 'b', 'c', 'd', 'e') set1 = {100, 200, 300, 400, 500} dict1 = {'A':2, 'B':3} print(list(tuple1)) # ['a', 'b', 'c', 'd', 'e'] print(list(set1)) # [400, 100, 500, 200, 300] print(list(dict1)) # ['A', 'B'], 只返回键!
3.4 set()
作用:将某个序列转换成集合
举例:
list1 = [10, 20, 30, 40, 50, 20] tuple1 = ('a', 'b', 'c', 'd', 'e') dict1 = {'A':2, 'B':3} # 集合是无序的,返回与原来的不一样是正常现象 print(set(list1)) # {40, 10, 50, 20, 30} print(set(tuple1)) # {'d', 'e', 'b', 'a', 'c'} print(set(dict1)) # {'B', 'A'}, 只返回键!注意:
- 集合可以快速完成列表去重
- 集合不支持下标
11.**推导式(生成式)
作用:简化代码
1.列表推导式
作用:用一个表达式创建一个有规律的列表或控制一个有规律列表。
需求:创建一个0-10的列表
- 举例1:while循环实现
# 1. 准备一个空列表 list1 = [] # 2. 书写循环,依次追加数字到空列表list1中 i = 0 while i < 10: list1.append(i) i += 1 print(list1)- 举例2:for循环实现
# 1. 准备一个空列表 list1 = [] # 2. 书写循环,依次追加数字到空列表list1中 for i in range(10): list1.append(i) print(list1)- 举例3:列表推导式实现
# 先看for后遍历,最前面i为遍历值,左右两边表示将遍历值生成列表 list1 = [i for i in range(10)] print(list1)
1.1 带if 的列表推导式
需求:创建0-10的偶数列表
举例1:range()步长实现
list1 = [i for i in range(0, 10, 2)] print(list1)举例2:if实现
list1 = [i for i in range(10) if i%2 == 0] print(list1)
扩展:if…else…的列表推导式
# 此处if...else主要起赋值作用,当data中的数据满足if条件时将其做exp1处理,否则按照exp2处理,最后统一生成为一个数据列表 list1 = [exp1 if condition else exp2 for x in data] # 非偶数用.代替 list1 = [i if i%2==0 else '.' for i in range(10)] print(list1)
1.2 多个for循环实现列表推导式
需求:创建列表如下:
[(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]实现:
# 第一个for先执行一次,第二个for执行3次,等同于嵌套看待 list1 = [(i, j) for i in range(1, 3) for j in range(3)] print(list1)
2.字典推导式
字典推导式作用:快速合并列表为字典或提取字典中目标数据。
应用场景:将两个列表快速合并为一个字典
举例1:创建一个字典,字典key是1-5数字,value是这个数字的2次方
# 先看for后遍历,最前面i为键,左右两边表示将遍历值生成字典 dict1 = {i:i**2 for i in range(1, 5)} print(dict1) # {1: 1, 2: 4, 3: 9, 4: 16}注意:键必须为不可变类型充当
举例2:将两个列表合并为一个字典
list1 = ['name', 'age', 'gender'] list2 = ['Tom', 20, 'man'] dict1 = {list1[i]: list2[i] for i in range(len(list1))} print(dict1) # {'name': 'Tom', 'age': 20, 'gender': 'man'}举例3:提取字典中目标数据
counts = {'MBP': 268, 'HP': 125, 'DELL': 201, 'Lenovo': 199, 'acer': 99} # 需求:提取上述电脑数量大于等于200的字典数据 count1 = {key: value for key, value in counts.items() if value >= 200} print(count1) # {'MBP': 268, 'DELL': 201}
3.集合推导式
需求:创建一个集合,数据为下方列表的2次方。
list1 = [1, 1, 2]实现:
list1 = [1, 1, 2] # 先看for后遍历,最前面i为遍历值。在没有冒号键值对的情况下,左右两边表示将遍历值生成集合 set1 = {i ** 2 for i in list1} print(set1) # {1, 4}注意:集合有数据去重功能。
总结
有误之处,欢迎指正。
版权声明:本文为weixin_44212573原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。