概述
1、基本语法及应用:
1、列表推导式是在列表中进行的,要使用方括号[]
2、列表推导式是使用一组数据来填充列表的,因此需要用for...in...
3、需要对原数据进行处理,因此需要有expression
基本语法如下:
[expression for target in iterable]
例如:
x = [i for i in range(10)]
x
#结果为[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
y = [i*5 for i in x]
y
#结果为[0, 5, 10, 15, 20, 25, 30, 35, 40, 45]
上述代码相当于:
x = []
for i in range(10):
x.append(i)
#x
#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for i in range(len(x)):
y[i] = x[i] * 5
#y
#[0, 5, 10, 15, 20, 25, 30, 35, 40, 45]
也可以对字符串进行处理:
y = [c*3 for c in 'abcdefg']
y
#['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff', 'ggg']
提取矩阵中某列元素:
mm = [[1,2,3],
[4,5,6],
[7,8,9]]
a = [row[1] for row in mm]#第二列
提取矩阵中对角线元素:
mm = [[1,2,3],
[4,5,6],
[7,8,9]]
c = [mm[i][i] for i in range(len(mm))]
提取矩阵中反对角线元素:
mm = [[1,2,3],
[4,5,6],
[7,8,9]]
c = [mm[i][len(mm)-i-1] for i in range(len(mm))]
注:反对角线元素提取中,列一定要有-1,否则会报错:在i = 0时,超出列表范围
c = [mm[i][len(mm)-i] for i in range(len(mm))]
Traceback (most recent call last):
File "<pyshell#49>", line 1, in <module>
c = [mm[i][len(mm)-i] for i in range(len(mm))]
File "<pyshell#49>", line 1, in <listcomp>
c = [mm[i][len(mm)-i] for i in range(len(mm))]
IndexError: list index out of range
2、列表推导式与循环的区别:
循环是通过迭代逐个修改原列表中元素
列表推导式是直接创建一个新列表,然后赋值为原来的变量名
3、列表推导式的应用:
利用列表推导式创建一个3*3的矩阵
m = [[0]*3 for i in range(3)]
m
#[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
m[1][1] = 100
m
#[[0, 0, 0], [0, 100, 0], [0, 0, 0]]
4、有if分句的列表推导式
[expression for target in iterable if condition]
例:筛选偶数(被2整除):
even = [i for i in range(10) if i%2 == 0]
even
#[0, 2, 4, 6, 8]
执行顺序:先执行for语句,然后执行if语句,最后执行表达式
例:筛选b开头的字符串
words = ['aaa','bbb','ccc','ddd','eee']
bwords = [w for w in words if w[0] == 'b']
bwords
#['bbb']
5、嵌套的列表推导式:
[expression for target1 in iterable1
for target2 in iterable2
for target3 in iterable3
.... for targetn in iterablen]
例:将二维列表降阶为一维列表
col为列,row为行
m = [[1,2,3],[4,5,6],[7,8,9]]
a = [col for row in m for col in row]
a
[1, 2, 3, 4, 5, 6, 7, 8, 9]
等同于循环如下:
flatten = []
for row in m:
for col in row:
flatten.append(col)
#flatten
#[1, 2, 3, 4, 5, 6, 7, 8, 9]
也就是外层循环放在列表推导式前面,内层(嵌套循环)放在后面。
例:字符串
[x+y for x in 'abcdefg'for y in 'ABCDEFG']
#['aA', 'aB', 'aC', 'aD', 'aE', 'aF', 'aG', 'bA', 'bB', 'bC', 'bD', 'bE', 'bF', 'bG', 'cA', 'cB', 'cC', 'cD', 'cE', 'cF', 'cG', 'dA', 'dB', 'dC', 'dD', 'dE', 'dF', 'dG', 'eA', 'eB', 'eC', 'eD', 'eE', 'eF', 'eG', 'fA', 'fB', 'fC', 'fD', 'fE', 'fF', 'fG', 'gA', 'gB', 'gC', 'gD', 'gE', 'gF', 'gG']
用循环体可得:
_ = []#表示临时变量
for x in 'abcdefg':
for y in 'ABCDEFG':
_.append(x+y)
6、列表推导式终极语法:
[expression for target1 in iterable1 if condition1
for target2 in iterable2 if condition2
for target3 in iterable3 if condition3
.... for targetn in iterablen if conditionn]
例如:
a = [[x,y] for x in range(11) if x%3 == 0 for y in range(20) if y%5 == 1]
a
#[[0, 1], [0, 6], [0, 11], [0, 16], [3, 1], [3, 6], [3, 11], [3, 16], [6, 1], [6, 6], [6, 11], [6, 16], [9, 1], [9, 6], [9, 11], [9, 16]]
最后
以上就是美满海燕为你收集整理的[python入门学习]9、列表推导式1、基本语法及应用:2、列表推导式与循环的区别:3、列表推导式的应用:4、有if分句的列表推导式5、嵌套的列表推导式:6、列表推导式终极语法:的全部内容,希望文章能够帮你解决[python入门学习]9、列表推导式1、基本语法及应用:2、列表推导式与循环的区别:3、列表推导式的应用:4、有if分句的列表推导式5、嵌套的列表推导式:6、列表推导式终极语法:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复