https://blog.csdn.net/qq_27361945/article/details/79816843
列表解析
根据已有列表,高效创建新列表的方式。
列表解析是Python迭代机制的一种应用,它常用于实现创建新的列表,因此用在[]中。
语法:
[expression for iter_val in iterable]
[expression for iter_val in iterable if cond_expr]
如:1、列出1~10所有数字的平方,即如何用一行代码生成[1,4,9,16,25,36,49,64,81,100] ?
list = [i ** 2 for i in range(1, 11)]
print(list)
#另外一种使用for循环的方法:
L = []
for i in range(1, 11):
L.append(i ** 2)
print(L)
结果:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
2、列出1~10中大于等于4的数字的平方
list = [i ** 2 for i in range(1,11) if i >= 4]
print(list)
L = []
for i in range(1, 11):
if i >= 4:
L.append(i ** 2)
print(L)
结果:[25, 36, 49, 64, 81, 100]
3、列出1~10所有数字的平方除以2的值
list = [i ** 2/2 for i in range(1, 11)]
print(list)
L = []
for i in range(1, 11):
L.append(i ** 2/2)
print(L)
结果:[0, 2, 4, 8, 12, 18, 24, 32, 40, 50]
4、列出"/var/log"中所有已'.log'结尾的文件
import os
file = [file for file in os.listdir('/var/log') if file.endswith('.log')]
print file
file = []
for i in os.listdir('/var/log'):
if file.endswith('.log'):
file.append(file)
print file
结果:['boot.log', 'cloud-init.log', 'yum.log', 'mysqld.log', 'ldap.log', 'krb5kdc.log', 'kadmind.log']
5、实现两个列表中的元素逐一配对
list1 = ['a', 'b', 'c']
list2 = [1, 2, 3]
list3 = []
for a in list1:
for b in list2:
list3.append((a, b))
print(list3)
list1 = ['a', 'b', 'c']
list2 = [1, 2, 3]
list3 = [(a, b) for a in list1 for b in list2 ]
print(list3)
结果:[('a', 1), ('a', 2), ('a', 3), ('b', 1), ('b', 2), ('b', 3), ('c', 1), ('c', 2), ('c', 3)]
6、使用列表解析生成 9*9 乘法表
print('\n'.join([''.join(['%s*%s=%-2s '%(y, x, x*y) for y in range(1, x+1)]) for x in range(1, 10)]))
结果:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
网友评论