zsj007
蓝桥python学习系列

Python 基础语法 Python 列表推导式
你有没有写过这样的代码?想生成一个新列表,得先建空列表、再写 for 循环、最后用append()加元素 —— 又长又麻烦。今天教你一个 Python “偷懒小技巧”:列表推导式,用一行代码就能代替 3 行循环,既简洁又高效。

一,列表推导式(List Comprehension)
列表推导式是 Python 中简洁、高效的语法,核心作用是:用一行代码完成 “遍历可迭代对象→处理元素→生成新列表” 的全过程,替代繁琐的for循环 +append()写法,同时可读性更强、执行速度更快。

二,为什么列表推导式更好用?
在没有列表推导式时,要生成一个 “处理后的新列表”,需要写多行for循环:
示例:生成 1-10 的平方数列表
传统for循环写法(繁琐):
squares = [] # 1. 先创建空列表
for num in range(1, 11) # 2. 循环遍历1-10
squares.append(num * num) # 3. 处理元素(求平方),添加到列表
print(squares)
列表推导式写法(1 行代码):
squares = [num * num for num in range(1, 11)] # 输出和上面完全一样
这样看起来是不是瞬间清爽了?这就是列表推导式的核心:把 “遍历、处理、生成列表” 压缩成一行。

三、列表推导式的基础语法(照着套就行)
列表推导式的结构很固定,记住这个公式:
新列表 = [对元素的处理操作 for 元素 in 可迭代对象]
拆解一下每个部分:
对元素的处理操作:拿到每个元素后,你想做的事(比如取首字母、算平方);
元素:给遍历到的每个内容起个名字(比如遍历单词叫word,遍历数字叫num);
可迭代对象:你要遍历的东西(比如列表、字符串、range())

四、列表推导式的 “坑”:别写太复杂!
列表推导式虽然简洁,但不要把复杂逻辑都堆在一行里—— 比如嵌套多个循环、写超长的处理操作,会让代码变得难以阅读。

五、实战: “词组缩写题”:列表推导式是核心
题目描述
输入一个由多个英文单词组成的词组(单词之间用空格分隔),请你编写程序,提取每个单词的首字母并转为大写,然后将这些首字母拼接起来,得到这个词组的缩写,最后输出该缩写
words = input().split() # 1. 读取输入,分割成单词列表
abbr_chars = [word[0].upper() for word in words] # 2. 用列表推导式:取每个单词首字母+转大写
abbr = "".join(abbr_chars) # 3. 拼接成缩写
print(abbr)
如果不用列表推导式,这一步要写 4 行代码:
abbr_chars = []
for word in words:
first_char = word[0].upper()
abbr_chars.append(first_char)
对比下来,列表推导式是不是既快又省力?

六,总结
列表推导式是 Python 的 “语法糖”—— 它没增加新功能,但让代码更简洁、更易读。记住这 2 个核心用法:
基础版:[处理操作 for 元素 in 可迭代对象](遍历所有元素并处理);
筛选版:[处理操作 for 元素 in 可迭代对象 if 条件](只处理符合条件的元素)
下次写循环生成列表时,试试用列表推导式 —— 一行代码搞定,效率直接翻倍!

posted on 2025-12-08 20:59  予佳  阅读(0)  评论(0)    收藏  举报