python高阶:列表推导式

python高阶:列表推导式

1、python列表推导式是一种高效创建列表的语法结构,能将循环、条件判断、和元素处理合并为一行代码,大幅提升代码简洁性。

2、列表推导式的基本语法结构

[表达式 for 变量 in 可迭代对象 if 条件]

·表达式:对迭代元素进行转换或计算,决定列表元素的最终值。

·for循环:遍历可迭代对象(如列表、元组、字符串、range等)。

·if条件(可选):删选符合条件的元素,仅满足条件的元素会被加入列表。

3、基础遍历与表达式

无需条件筛选时,直接通过表达式转换元素:

1
2
3
4
#生成1-5的平方数列表
squares=[x**2 for i in range(1,6)]print(squares) #输出[1,4,9,16,25]
#字符串长度列表
words=["apple","book","car"]lengths=[len(word) for word in words]print(lengths) #输出[5,4,3]

4、条件筛选(if子句)

在for循环后添加if条件,过滤不符合条件的元素:

1
2
3
4
#筛选1-10中的偶数
evens=[x for x in range(1,11) if x%2==0]print(evens) #输出[2,4,6,8,10]
#提取长度超过3的单词
words=["apple","book","car"]long_words=[word for word in words if len(word)>3]print(long_words) #输出["apple","book"]

5、多层循环(嵌套for循环)

可在列表推导式中使用多个for循环(类似嵌套循环):

1
2
3
4
#两个列表元素的组合
a=[1,2]b=[3,4]pairs=[(x,y) for x in a for y in b]print(pairs) #输出结果:[(1,3),(1,4),(2,3),(2,4)]
#二维列表行列交换
lst=[[1,2],[3,4],[5,6]]trans_lst=[[row[i] for row in lst] for i in range(2)]print(trans_lst) #输出结果:[[1,3,5],[2,4,6]]

6、条件嵌套(if-else表达式)

如果需在表达式中使用条件逻辑,需将if-else放在表达式后:

1
2
3
4
#正数保留,负数转为0
num=[1,-2,3,-4]result=[x if x>0 else 0 for x in num]print(result) #输出:[1,0,3,0]
#字符串分类(长度>3转换成大写,否则转为小写)
words=["hi","python","java"]trans_words=[word.upper() if len(word)>3 else word.lower() for word in words]print(trans_words) #输出:["hi","PYTHON","JAVA"]

7、与函数结合

1
2
3
4
5
6
#使用自定义函数处理元素
def double(x): #加倍
return x*2
num=[1,2,3,4]
double_lst=[double(i) for i in num]
print(double_lst) #输出:[2,4,6,8]

8、集合与字典推导式

1
2
3
4
#集合推导式(自动去重)
unique_set={x**2 for x in [1,2,2,3]}print(unique_set) #输出:{1,4,9}
#字典推导式
word_dict={word:len(word) for word in ["apple","banana"]}print(word_dict) #输出:{"apple":5,"banana":6}

https://mp.weixin.qq.com/s/7G_wsTgBDvAAHbsqLKFVfA?scene=1