python-列表生成式
阿新 • • 發佈:2018-12-10
- 需求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')])