python-列表生成式

  • 需求1.接收变量k,a,b
s = '51 5000 10000'

第一种:
li = []
for item in s.split():
	li.append(int(item))
k,a,b = li
print(k,a,b)

列表生成式:
li=[int(item) for item in s.split()]
print(li)
print(k,a,b)
  • 需求2:
生成一个列表,列表元素分别为[1**1,2**2,3**3,4**4...n*n]

第一种:
li = []
for i in range(1,8):
     li.append(i**i)
print(li)

列表生成式:
li = [i**i for i in range(1,8)]
print(li)
  • [experssion for item in 序列 if 判断语句]
li = [i ** 2 for i in range(1, 8) if i % 2 == 0]
print(li)
  • 找出1~10之间的所有的偶数
print([i for i in range(1, 11) if i % 2 == 0])
  • 找出1~1000之间的所有质数
def isPrime(num):
    for j in range(2,num):
        if num%j==0 :
            return 1
print([i for i in range(2, 1000) if not isPrime(i)])
  • s1=‘ABC’ s2=‘123’(for嵌套循环)
    ‘A1’, ‘A2’, ‘A3’, ‘B1’, ‘B2’, ‘B3’, ‘C1’, ‘C2’, ‘C3’
print([i + j for i in 'ABC' for j in '123'])
  • 列表生成式变形之for循环嵌套
    需求:讲3x3的矩阵转换成一堆数组
    [[1,2,3],[4,5,6],[7,8,9]] ----> [1,2,3,4,5,6,7,8,9]
li = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

第一种:
resLi = []
for item1 in li:         # [1,2,3] [4,5,6] [7,8,9]
    for item2 in item1:
            resLi.append(item2)
print(resLi)

第二种:列表生成式:
print([item2 for item1 in li for item2 in item1])

第三种:
from  itertools import chain
print(list(chain(*li))) 

列表生成式案例

  • 将列表中所有内容都变成小写
li = ['dasdaFSDFSFDSF','dadDSADSAsdaDASsadas']
print([i.lower() for i in li])
  • 找出/var/log目录中,所有以.log结尾的文件名或者目录名
import os
# print(os.listdir('/var/log'))     ##/var/log/的文件名
print([filename for filename in os.listdir('/var/log') if filename.endswith('.log')])

猜你喜欢

转载自blog.csdn.net/qq_43273590/article/details/84781665