当前位置: 首页 > news >正文

Python推导式详解

引言       

         推导式(Comprehensions)是Python中一种简洁且强大的语法结构,可以用来生成列表、字典和集合。推导式使得代码更加简洁、易读,同时也更具Pythonic风格。今天我将将详细介绍列表推导式、字典推导式和集合推导式,并通过例子来展示它们的使用方法,希望对大家有所帮助。

列表推导式

列表推导式是一种简洁的生成列表的方式。它的基本语法如下:

        [表达式 for 变量 in 列表]        [expression for item in iterable] 或者

        [表达式 for 变量 in 列表 if 条件]        [expression for item in iterable if condition]

其中,expression 是生成元素的表达式,item 是从 iterable(可迭代对象)中取出的元素,condition 是一个可选的过滤条件。

这样看你可能不是很理解,看几个例子吧。

示例:
1.生成平方数列表
squares = [x**2 for x in range(10)]
print(squares)
#输出结果为:
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
2.过滤奇数
odd_numbers = [x for x in range(10) if x % 2 != 0]
print(odd_numbers)
#输出结果为:
[1, 3, 5, 7, 9]
3.嵌套循环 
pairs = [(x, y) for x in range(3) for y in range(3)]
print(pairs)
#输出结果为:
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

字典推导式

字典推导式用于生成字典。它的基本语法如下:

{键的表达式:值的表达式 for 变量 in 字典}

{key_expression: value_expression for item in iterable}

或者

{键的表达式:值的表达式 for 变量 in 字典 if 条件}

{key_expression: value_expression for item in iterable [if condition]}

示例:
1.生成平方字典
square_dict = {x: x**2 for x in range(10)}
print(square_dict)
#输出结果为:
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
 2.过滤值大于20的项
filtered_dict = {x: x**2 for x in range(10) if x**2 > 20}
print(filtered_dict)#输出结果为:
{5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
3.使用字符串键
char_count = {char: ord(char) for char in 'abcde'}
print(char_count)#输出结果为:
{'a': 97, 'b': 98, 'c': 99, 'd': 100, 'e': 101}

集合推导式

集合推导式用于生成集合。它的基本语法如下:

[表达式 for 变量 in 集合]

{expression for item in iterable}

或者

[表达式 for 变量 in 集合 if 条件]

{expression for item in iterable if condition}

示例:
1.生成平方集合
square_set = {x**2 for x in range(10)}
print(square_set)#输出结果为:
{0, 1, 64, 4, 36, 9, 16, 49, 81, 25}
2.过滤偶数 
even_set = {x for x in range(10) if x % 2 == 0}
print(even_set)#输出结果为:
{0, 2, 4, 6, 8}
3.去重
unique_chars = {char for char in 'abracadabra'}
print(unique_chars)
#输出结果为:{'d', 'c', 'b', 'r', 'a'}

结合示例

推导式不仅仅限于单一类型,还可以互相结合使用。例如,将列表推导式和字典推导式结合起来使用:

# 列表推导式生成键值对元组
pairs = [(x, x**2) for x in range(10)]
# 字典推导式生成字典
square_dict = {key: value for (key, value) in pairs}
print(square_dict)#输出结果为:
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}

 总结

        推导式是Python中非常有用的工具,能让代码更简洁易读。在需要生成列表、字典和集合时,推导式提供了一种优雅的解决方案。通过掌握列表、字典和集合的推导式,可以让你的Python代码更具表现力和效率。

http://www.lryc.cn/news/365684.html

相关文章:

  • stm32中如何实现EXTI线 0 ~ 15与对应IO口的配置呢?
  • Python 短文本匹配,短文本语义相似度,基于大模型的短文本匹配,基于LLMs的短文本语义相似度识别,短文本语义扩充和匹配
  • 提升接口性能方式汇总
  • C++中的常见语法糖汇总
  • TensorFlow Playground神经网络演示工具使用方法详解
  • 【git】subtree 简单教程
  • C语言基础:字符串函数使用与剖析
  • 搭建Vulnhub靶机网络问题(获取不到IP)
  • Prompt 提示词强大方法论和框架2
  • C语言分支和循环(2)
  • 14.FreeRTOS 流媒体缓存 Stream Buffer
  • 利用ffmpeg把视频分解成图片(每秒x张图)再图片合成视频
  • 冯喜运:6.7今日外汇黄金原油走势分析及日内操作策略
  • [网络基础]——计算机网络(OSI)参考模型 详解
  • 使用 Java 获取图片的 MD5 编码
  • GO——泛型
  • TSP(Python):Qlearning求解旅行商问题TSP(提供Python代码)
  • 【精通NIO】NIO介绍
  • ssh远程管理
  • 【ai】pycharm远程ssh开发
  • leetcode 9 回文数
  • 学习Python的基础知识
  • 第五届上海市青少年算法竞赛网络同步赛(小学组)
  • 【区分vue2和vue3下的element UI Cascader 级联选择器组件,分别详细介绍属性,事件,方法如何使用,并举例】
  • pottery,一个超酷的 Python 库!
  • 【Android面试八股文】在Java中重载和重写是什么意思,区别是什么?
  • 【第二篇】SpringSecurity源码详解
  • 基于Python+FFMPEG环境下载B站歌曲
  • 静态 VxLAN 浅析及配置示例(头端复制)
  • 2023年与2024年AI代理基础设施的演进:六大关键变化