当前位置: 首页 > 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.hskmm.com/?act=detail&tid=21538

相关文章:

  • java 解析json字符串,获取特定的字段值,JsonObject
  • python 批量提取txt数据中的值写入csv
  • 回忆中学的函数
  • Java 一行一行的读取文本,小Demo 大学问
  • 家里wifi电信出口ip如何控制不变,解决访问云服务器上面的资源
  • 2025 年挤压造粒机源头厂家最新推荐榜单:前五企业技术实力、服务能力及口碑测评指南对辊挤压/化肥挤压/干粉挤压造粒机厂家推荐
  • MYSQL数据库取消表的约束
  • 2025 年京东 e 卡回收平台最新推荐排行榜:权威测评实时结算平台,助力用户安全高效转让京东 e 卡
  • 2025 年支付宝消费券回收平台最新推荐榜单:优质平台权威测评,助您高效安全处理闲置消费券支付宝消费券回收/闲置支付宝消费券回收/支付宝消费券快速回收平台推荐
  • ICP备案查询网站 域名备案查询
  • 2025 年注浆管厂家最新权威推荐排行榜:聚焦 R780/108 / 隧道 / 预埋 / 桩基等专用产品,精选 TOP5 优质企业
  • stable diffusion网络结构详解
  • 9.30
  • 网络与系统攻防技术实验一——逆向破解与Bof
  • 【python】解决grpcio.protoc生成的pb文件里面没有类和方法定义
  • 阙韩
  • “计算机配置\Windows 设置\安全设置\本地策略\审核策略” 配置后不生效
  • Spring Boot 事件发布与监听 观察者模式的实际应用 - 实践
  • P13969 [VKOSHP 2024] Exchange and Deletion
  • Matlab 通用库的fft和dsp toolbox的dsp.fft对比
  • [CTS2024] 众生之门
  • [CEOI 2025] Equal Mex
  • [ROI 2018] Quick sort
  • CF2127F Hamed and AghaBalaSar
  • 2025 年PPH 管厂家推荐榜单:江苏镇江扬中优质 PPH 管道/管材/管件厂家权威精选
  • Label-Free Liver Tumor Segmentation
  • CF1951G Clacking Balls
  • [ABC311Ex] Many Illumination Plans
  • 2025 预分散颜料厂家最新推荐榜:超高含量技术 + 合规企业全景指南,纺丝 / 吹膜专用产品选型手册
  • 倍增思想与其优化