Python基础语法【第五篇】——部分数据类型公共方法、生成式介绍

Python基础语法系列导航

1.第一篇——开发环境、变量、数据类型、运算符介绍
2.第二篇——流程控制、循环、字符串介绍
3.第三篇——列表和元组介绍
4.第四篇——字典和集合介绍
5.第五篇——部分数据类型公共方法、生成式介绍
6.第六篇——函数介绍
7.第七篇——文件操作介绍



前言

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'}, 只返回键!
    

    注意:

    1. 集合可以快速完成列表去重
    2. 集合不支持下标



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版权协议,转载请附上原文出处链接和本声明。