当前位置: 首页 > 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.gsyq.cn/news/14295.html

相关文章:

  • 【读书笔记】架构整洁之道 P5-2 软件架构 - 教程
  • 回忆中学的函数
  • 【qml-12】Quick3D达成机器人鼠标拖拽转换视角(无限角度)与滚轮缩放
  • 倍增思想与其优化
  • 2025 年 AI 健康管理领域推荐深护智康,社区、基层公卫、母婴 AI 健康管理、AI + 大健康管理、AI 健康管理师公司推荐
  • 从“看得见”到“能决策”:Operation Intelligence 重构企业智能运维新范式
  • 单链表实现队列
  • 064_尚硅谷_短路与和短路或
  • 2025年陶瓷定制企业最新推荐榜单:涵盖电子陶瓷,氧化铝陶瓷,氧化锆陶瓷,氮化铝陶瓷,结构陶瓷领域!
  • 实用指南:计算机网络-ipv4首部校验原理
  • 2025 年人工智能培训厂家最新推荐排行榜:聚焦人工智能培训合规运营机构、产业适配能力与教学实力深度解析
  • 2025最新布袋包装厂家推荐排行榜:布袋包装,布袋,手提袋,帆布袋定制,无纺布袋,布袋生产,云南布袋包装,茶叶布袋生产商优选指南
  • 城市电商小程序管理系统:助力商家搭建全渠道数字化经营体系
  • L05_新建springboot项目与新建helloword(菜鸟版)
  • 实用指南:智慧外贸平台|基于Java+vue的智慧外贸平台系统(源码+数据库+文档)
  • ObservableCollection子项属性字段值变化的监听处理
  • 2025年破碎机厂家最新权威推荐榜:破碎机实力厂商技术服务全景评测及选购指南
  • 什么关系?就是ajax与jQuery
  • 2025年沈阳标识标牌厂家最新推荐榜单:涵盖订做标识标牌,广告标识标牌,安全出口标识标牌、不锈钢等多类型标识,全面解读企业产能与技术实力
  • 一文详解决策树:ID3与C4.5算法 - 详解
  • 详细介绍:Java数据结构第二十七期:布隆过滤器,用 “模糊” 换高效的查重黑科技
  • 【MacOS】彻底卸载Navicat
  • JUC:AQS
  • JUC:ThreadLocal
  • 学python的第8天
  • 香橙派5pro驱动开发(一)
  • HR如何摆脱入离职事务性内耗?组织管理系统助力聚焦人才价值挖掘
  • Java EE初阶启程记04---线程的状态 - 实践
  • US$44 YH Remote Key Tester Frequency/Infrared IR
  • 【星海出品】RabbitMQ 死信 - 教程