目录
(5)现在有一列表lst = [[1,2,3],[4,5,6],[7,8,9]]要求取出1/4/7 和 1/5/9 元素
一.列表推导式
1.基本含义
列表推导式(list comprehension)是利用其它列表创建新列表的一种方式,工作原理类似for循环,即可对得到的元素进行转换或者筛选。
2.基本格式
列表推导式的基本格式有两种:
变量名=[表达式 for 变量 in 列表]
变量名= [表达式 for 变量 in 列表 if 条件]
3.执行流程
遍历出列表中的内容给变量,表达式根据变量值进行逻辑运算。
或者遍历列表中的内容给变量,然后进行判断,符合的值在给表达式。
4.实例
(1)将lst中每一个元素进行平方后放入到一个新列表中
我们看到这种题目第一反应是用for循环遍历:
普通方法:
lst = [1,2,3,4,5]
new = []
for i in lst:
num = i*i
new.append(num)
print(new)
确实非常清楚,但是我们如果使用推导式则更加简单。
推导式:外层括号表示是在列表里。for循环得到的量放在for前面即可!
lst = [1,2,3,4,5]
aa = [i*i for i in lst]
print(aa)
结果如下:
(2)求出lst 中是奇数的值,然后放入到一个新列表中
a = [1,2,3,4,5,6]
普通方法:
a = [1,2,3,4,5,6]
b = []
for i in a:
if i % 2==1:
b.append(i)
print(b)
推导式:
a = [1,2,3,4,5,6]
b = [i for i in a if i %2==1]
print(b)
结果如下:
(3)求列表中所有大于2的偶数进行平方计算
a = [1,2,3,4,5,6]
分析一下:1.所有大于2的偶数 2.平方计算
普通方法:
a = [1,2,3,4,5,6]
b = []
for i in a:
if i >2 :
if i %2 ==0:
b.append(i*i)
print(b)
推导式:
b = [i*i for i in a if i >2 if i %2==1]
print(b)
结果如下:
(4)将一个嵌套列表转换成一个一维列表。
a = [[1,2],[2,3],[3,4]]
变成[1,2,2,3,3,4]
普通方法:
a = [[1,2],[2,3],[3,4]]
b = []
for list in a: #遍历大列表的每个元素
for i in list:#遍历小列表中的每个元素
b.append(i)
print(b)
我们分析下这个列表,大列表中有许多小列表,我们可以采用遍历大列表后遍历每个小列表得到每个元素
推导式:
a = [[1,2],[2,3],[3,4]]
b = [i for lst in a for i in lst]
print(b)
结果如下:
(5)现在有一列表lst = [[1,2,3],[4,5,6],[7,8,9]]要求取出1/4/7 和 1/5/9 元素
这次我们不用普通方法了,直接用推导式。
我们先分析1,4,7 他们都在大列表中的小列表的第一个位置(索引0)
a = [[1,2,3],[4,5,6],[7,8,9]]
b = [i[0] for i in a]
print(b)
然后我们再来分析第二个,他们的位置分别是[0][0],[1][1],[2][2],所以就有思路了
a = [[1,2,3],[4,5,6],[7,8,9]]
b = [a[i][i] for i in range(len(a))]
print(b)
二.字典推导式
1.含义
字典推导式是该思想的延续,语法差不多,只不过产生的是字典而已。
2.格式
变量名={key:values for。。。}
3.实例
(1)将字典中的key和value进行兑换
普通方法:创建一个空字典,然后把value和key交换即可
a = {'1':10,'2':20}
c = {}
for key in a:
values = a[key]
c[values] = key
print(c)
得出结果:
推导式:
a = {'1':10,'2':20}
b = {values:key for key,values in a.items()}
print(b)
三.集合推导式(主要去重)
简单介绍下即可
L=[1,1,1,2,2,2,3,4,5,6,7]
a = {i for i in L}
print(a)
结果如下: