列表推导式“f() for i in l”的三个应用

列表推导式(有的叫列表解析)f() for i in l  在应用时需要用方括号或圆括号括起来,它不是for循环,后面不带冒号(:)。其中l是序列(range()、列表、元组、字典等),i是序列l中的元素,f()是与i有关的函数或表达式。

列表推导式的三个作用如下:

一、建立新列表:

def f(x):
	return x*2
l = [i for i in range(6)]
print(l)
li = [i*2 for i in [0,1,2,3,4,5]]
print(li)
lis=[f(i) for i in range(6)]
print(lis)

运行结果:

[0, 1, 2, 3, 4, 5]
[0, 2, 4, 6, 8, 10]
[0, 2, 4, 6, 8, 10]


------------------
(program exited with code: 0)

Press any key to continue . . .

它不但能对列表进行以上操作,对元组、字典也可以进行同样的操作而建立相应的列表。

二·、创建迭代对象:

def f(x):
	return x*2

lis=(f(i) for i in range(6))  #注意这里是圆括号!
print(lis)
print(next(lis),end='**')
print(next(lis),end='**')

运行结果:

 at 0x0000022148095648>
0**2**

------------------
(program exited with code: 0)

Press any key to continue . . .

三、‘操作矩阵:

def f(x):
	return x*2
matrix=[[1,2,3],
	[4,5,6],
	[7,8,9]]
m=[i[1] for i in matrix]     #提取矩阵列元素
ms=[f(i[1]) for i in matrix]
md=[f(matrix[i][i]) for i in [0,1,2]]
print('第二列的元素列表',m)
print('对第二列的元素进行函数f(x)计算:',ms)
print('对对角线的元素进行函数f(x)计算',md)

运行结果:

第二列的元素列表 [2, 5, 8]
对第二列的元素进行函数f(x)计算: [4, 10, 16]
对对角线的元素进行函数f(x)计算 [2, 10, 18]


------------------
(program exited with code: 0)

Press any key to continue . . .

另外,在列表推导式的后面增加if语句进行扩展,例如:

def f(x):
	return x*2
matrix=[[1,2,3],
		[4,5,6],
		[7,8,9]]

md=[f(matrix[i][i]) for i in [0,1,2] if f(matrix[i][i])%3!=0]
print('对对角线的元素进行函数f(x)计算,并列出不被3整除的值:',md)

运行结果:

对对角线的元素进行函数f(x)计算,并列出不被3整除的值: [2, 10]


------------------
(program exited with code: 0)

Press any key to continue . . .

 

你可能感兴趣的:(学习笔记)