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

Python 列表生成式、字典生成式与生成器表达式

1. 列表生成式 (List Comprehension)

语法:[expression for item in iterable if condition]

示例:

1.基本示例
# 创建平方数列表
squares = [x**2 for x in range(5)]
print(squares)  # [0, 1, 4, 9, 16]# 创建偶数列表
evens = [x for x in range(10) if x % 2 == 0]
print(evens)  # [0, 2, 4, 6, 8]

2.带条件的列表生成式 # 过滤出长度大于3的单词 words = ['apple', 'cat', 'dog', 'elephant', 'bat'] long_words = [word for word in words if len(word) > 3] print(long_words) # ['apple', 'elephant']# 处理字符串列表 names = ['alice', 'bob', 'charlie'] capitalized = [name.title() for name in names] print(capitalized) # ['Alice', 'Bob', 'Charlie']3.多重循环 # 创建坐标列表 coordinates = [(x, y) for x in range(3) for y in range(2)] print(coordinates) # [(0, 0), (0, 1), (1, 0), (1, 1), (2, 0), (2, 1)]# 矩阵转置 matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] transposed = [[row[i] for row in matrix] for i in range(3)] print(transposed) # [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

2. 字典生成式 (Dictionary Comprehension)

语法:{key_expression: value_expression for item in iterable if condition}

示例:

1.基本示例
# 创建数字平方字典
squares_dict = {x: x**2 for x in range(5)}
print(squares_dict)  # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}# 转换列表为字典
fruits = ['apple', 'banana', 'cherry']
fruit_dict = {fruit: len(fruit) for fruit in fruits}
print(fruit_dict)  # {'apple': 5, 'banana': 6, 'cherry': 6}2.带条件的字典生成式
# 只保留值大于2的项
numbers = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
filtered = {k: v for k, v in numbers.items() if v > 2}
print(filtered)  # {'c': 3, 'd': 4}# 键值转换
original = {'a': 1, 'b': 2, 'c': 3}
swapped = {v: k for k, v in original.items()}
print(swapped)  # {1: 'a', 2: 'b', 3: 'c'}3.处理字符串
# 创建字符索引字典
text = "hello"
char_index = {char: index for index, char in enumerate(text)}
print(char_index)  # {'h': 0, 'e': 1, 'l': 2, 'l': 3, 'o': 4}# 大小写转换
data = {'Name': 'Alice', 'Age': 25, 'City': 'Beijing'}
lowercase_keys = {k.lower(): v for k, v in data.items()}
print(lowercase_keys)  # {'name': 'Alice', 'age': 25, 'city': 'Beijing'}

3. 生成器表达式 (Generator Expression)

语法:(expression for item in iterable if condition)

示例

1.基本示例
# 创建生成器表达式
squares_gen = (x**2 for x in range(5))
print(squares_gen)  # <generator object <genexpr> at 0x...># 使用生成器
for num in squares_gen:print(num, end=" ")  # 0 1 4 9 16
print()# 生成器只能使用一次
squares_gen = (x**2 for x in range(3))
print(list(squares_gen))  # [0, 1, 4]
print(list(squares_gen))  # [] - 已经耗尽2. 处理大文件时节省内存
# 假设有一个大文件,我们想统计行数
lines = (line for line in open('large_file.txt', 'r') if 'error' in line)
error_count = sum(1 for _ in lines)
print(f"错误行数: {error_count}")3.链式处理数据
numbers = (x for x in range(10))
squared = (x**2 for x in numbers)
filtered = (x for x in squared if x % 2 == 0)
result = list(filtered)
print(result)  # [0, 4, 16, 36, 64]

  

  

http://www.jsqmd.com/news/6453/

相关文章:

  • java 解析json字符串,获取特定的字段值,JsonObject
  • python 批量提取txt数据中的值写入csv
  • 【读书笔记】架构整洁之道 P5-2 软件架构 - 教程
  • 回忆中学的函数
  • Java 一行一行的读取文本,小Demo 大学问
  • 数字化转型业务流程总览图
  • MYSQL数据库取消表的约束
  • 2025 年京东 e 卡回收平台最新推荐排行榜:权威测评实时结算平台,助力用户安全高效转让京东 e 卡
  • 【qml-12】Quick3D达成机器人鼠标拖拽转换视角(无限角度)与滚轮缩放
  • 2025 年挤压造粒机源头厂家最新推荐榜单:前五企业技术实力、服务能力及口碑测评指南对辊挤压/化肥挤压/干粉挤压造粒机厂家推荐
  • 网络与系统攻防技术实验一——逆向破解与Bof
  • “计算机配置\Windows 设置\安全设置\本地策略\审核策略” 配置后不生效
  • 2025 预分散颜料厂家最新推荐榜:超高含量技术 + 合规企业全景指南,纺丝 / 吹膜专用产品选型手册
  • 倍增思想与其优化
  • 2025 年 AI 健康管理领域推荐深护智康,社区、基层公卫、母婴 AI 健康管理、AI + 大健康管理、AI 健康管理师公司推荐
  • 2025 最新权威推荐:全国开锁公司口碑排行榜,含智能锁专项服务与紧急上门品牌详解汽车保险柜开锁/汽车锁开锁/保险柜开锁/智能开锁/快速上门开锁公司推荐
  • 从“看得见”到“能决策”:Operation Intelligence 重构企业智能运维新范式
  • 2025 年透骨液膏药代理加盟 / 足浴包膏药代理加盟 / 青岛膏药代理加盟推荐:青岛步泽药业布泽草本透骨液代理合作解析
  • QMT委托对象orderInfo的属性以及对应的值
  • 2025 年电动门厂家最新推荐排行榜:实力厂家深度解析,含技术认证、案例及选购指南
  • 单链表实现队列
  • 从手机到汽车音响:蚀刻喇叭网的跨界应用前景 - 指南
  • 读人形机器人27太空中
  • 2025 年酒店一次性用品源头厂家最新推荐榜单:含牙签牙线筷子套杯盖等全品类及采购选择指南酒店一次性牙签/牙线/筷子套/杯盖/杯垫/杯套用品 厂家推荐
  • Vue2 和 Vue3 中 watch 用法和原理详解 - 实践
  • 05-FreeRTOS的内存管理
  • 2025攻丝机品牌最新权威推荐排行榜:聚焦全自动攻丝机,半自动等机型,精选攻丝机实力厂商助企业高效选购
  • ​​AI重构混沌工程:智能韧性守护架构高可用时代已来​
  • 064_尚硅谷_短路与和短路或
  • oppoR9m刷Linux系统: 说明-注意事项-知识点