【Python】—— 推导式

目录

(一)列表推导式

 示例:创建一个0-10的列表

  示例:带有条件的列表推导式

  示例:多个for循环实现列表推导式

(二)字典推导式

(三)集合推导式

总结 


(一)列表推导式

Python 中的列表推导式是一种简洁、高效的创建列表的方法。基本作用是一个表达式创建一个有规律的列表或控制一个有规律列表。列表推导式又叫列表生成式。其基本语法结构如下:

[expression for item in iterable if condition]

【解释说明】

  • expression:是列表推导式中每个元素都要执行的表达式,可以是简单的变量,也可以是复杂的表达式。
  • item:是 iterable(可迭代对象,如列表、元组、字符串、集合、字典等)中的元素。
  • iterable:是可迭代对象。
  • if condition:是可选的,用于过滤掉不满足条件的元素。

 示例:创建一个0-10的列表

  • 方法一:while循环实现
#1.准备一个空列表
1ist1=[]

#2,书写循环,依次追加数字到空列表11st1中
i=0
whi1e1<10:
    list1.append(i)
    1+=1

pr1nt(1ist1】
  •  方法二:or循环实现
list1=[]
for i in range(10):
    list1.append(i)

print(list1)
  • 方法三:列表推导式实现
list1 = [i for i in range(10)]
print(list1)

  示例:带有条件的列表推导式

要求:创建0-10的偶数列表

  • 方法一:range(0步长实现)
list = [i for i in range(0,10,2)]
print(list)
  • 方法二:if实现
list = [i for i in range(10) if i % 2 ==0]
print(list)

  示例:多个for循环实现列表推导式

要求:创建列表如下:

[(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)]

方法一:传统方式实现

list1 = []
for i in range(1,3):
    for j in range(3):
        list1.append((i,j))
print(list1)

方法一:多个for循环实现(就等同于for循环的循环嵌套)

list2 = [(i,j) for i in range(1,3) for j in range(3)]
print(list2)

【解释说明】

  • 外层循环:`for i in range(1,3)` + `i` 的值从 `1` 开始,到 `2` 结束(不包括 `3`),因为 `range(1,3)` 生成的是 `[1, 2]`。
  • 内层循环:`for j in range(3)` + `j` 的值从 `0` 开始,到 `2` 结束(不包括 `3`),因为 `range(3)` 生成的是 `[0, 1, 2]`。
  • 对于外层循环中的每一个 i 值,内层循环都会遍历所有的 j 值,并为每一对 (i, j) 生成一个元组。
  • 由于外层循环有两个值(1 和 2),而内层循环有三个值(01 和 2),所以总共会生成 6 个元组。

(二)字典推导式

首先大家先思考:如果有如下两个列表:

list1 = ['name','age','gender']
list2 = ['Tom',20,'man']

如何快速合并为一个字典?

  • 这就需要字典推导式。字典推导式作用:快速合并列表为字典或提取字典中目标数据。

它基于列表推导式(List Comprehension)的概念,但用于生成字典而不是列表。字典推导式的基本语法如下:

{key_expression: value_expression for item in iterable if condition}

【解释说明】

  • key_expression:用于生成字典键的表达式。
  • value_expression:用于生成字典值的表达式。
  • item:迭代变量,代表可迭代对象(如列表、元组、集合或字典)中的每一个元素。
  • iterable:可迭代对象,用于提供迭代变量item的值。
  • condition(可选):一个条件表达式,用于过滤可迭代对象中的元素。如果条件为真,则对应的键值对会被添加到字典中。

 示例:创建一个字典,字典key是1-5数字,value是这个数字的2次方。

dict1 = {i: i**2 for i in range(1,5)}

print(dict1)

 示例:将两个列表合并为一个字典

list1 = ['name','age','gender']
list2 = ['Tom',20,'man']

dict = {list1[i]:list2[i] for i in range(len(list1))}
print(dict)

 示例:提取字典中目标数据

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)

(三)集合推导式

它基于一个或多个for循环和可能的条件表达式。集合推导式的语法类似于列表推导式(List Comprehension),但结果是一个集合(set),因此它会自动去除重复的元素。

 示例:创建一个包含1到10之间所有偶数的集合

num = {x for x in range(1, 11) if x % 2 == 0} 
print(num)
  • 在这个例子中,我们遍历了从1到10的整数,并使用if语句检查每个数是否是偶数。
  • 如果是偶数,我们就将其添加到集合中。由于集合中的元素是唯一的,所以即使某个偶数在循环中多次出现,它也只会在集合中出现一次。

 示例:有一个列表的列表,在创建一个集合,其中包含所有子列表的第一个元素

# 创建一个列表的列表
list1 = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [1, 0, -1]]

# 创建一个集合,其中包含所有子列表的第一个元素  
set1 = {sublist[0] for sublist in list1}
print(set1)
  • 遍历了list1中的每个子列表,并使用了sublist[0]来获取每个子列表的第一个元素。这些元素被添1加到一个集合中,所以重复的元素只会出现一次。

总结 

以上便是关于推导式的全部知识小结!!!

相关推荐

  1. python推导

    2024-05-25 20:04:23       26 阅读
  2. python推导

    2024-05-25 20:04:23       11 阅读
  3. Python 推导介绍

    2024-05-25 20:04:23       12 阅读
  4. Python推导

    2024-05-25 20:04:23       16 阅读
  5. Python推导

    2024-05-25 20:04:23       11 阅读
  6. Python】—— 推导

    2024-05-25 20:04:23       9 阅读
  7. Python3 推导

    2024-05-25 20:04:23       7 阅读
  8. Python笔记|列表推导

    2024-05-25 20:04:23       16 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-25 20:04:23       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-25 20:04:23       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-25 20:04:23       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-25 20:04:23       20 阅读

热门阅读

  1. 美易官方:Copilot全面升级!

    2024-05-25 20:04:23       11 阅读
  2. Ros2_学习梳理_2_服务通信(赵虚左老师)

    2024-05-25 20:04:23       9 阅读
  3. uniapp 微信小程序设置 TabItem 红点

    2024-05-25 20:04:23       11 阅读
  4. Netty:AIO

    2024-05-25 20:04:23       12 阅读
  5. 前端常用的状态码

    2024-05-25 20:04:23       10 阅读
  6. 测试驱动开发(TDD)的探析

    2024-05-25 20:04:23       11 阅读
  7. vue的图片上传

    2024-05-25 20:04:23       8 阅读
  8. 【设计模式】单例模式的任务队列

    2024-05-25 20:04:23       10 阅读