程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python-列表推導式

編輯:Python

列表推導式:用非常簡潔的方式快速生成特定需求的列表
語法 [表達式 for 變量 in 序列或迭代對象]

1、用法1

# 舉例1
list = [i for i in range(5)]
print(list) #-->[0, 1, 2, 3, 4]

2、用法2

# 舉例2:使用列表推導式實現嵌套列表
nums= [[1,2,3],[4,5,6],[7,8,9]]
list2 = [num for elem in nums for num in elem] #第一個for是外循環,第二個for是內循環,內循環執行的快
print(list2) #-->[1, 2, 3, 4, 5, 6, 7, 8, 9]
# 相當於如下寫法
ret = []
for elem in nums:
for num in elem:
ret.append(num)
print(ret)#-->[1, 2, 3, 4, 5, 6, 7, 8, 9]

3、用法三

# 舉例3:過濾不符合條件的元素,參考力扣448題:消失的數字
nums = [1,6,8,9,0,4]
list = [i for i in nums if i > 5]#過濾出數組中大於5的數字
print(list)#-->[6, 8, 9]

4、用法四

# 舉例4:使用多個循環實現多序列元素的任意組合
list = [(x,y) for x in [1,2,3] for y in[2,3,4] if x!=y]
print(list)#-->[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 2), (3, 4)]

5、用法5

# 舉例5:實現矩陣轉置,這個有些難理解
matrix = [[1,2,3],[4,5,6],[7,8,9]]
re_matrix = [[row[i] for row in matrix] for i in range(3)]
print(re_matrix)#-->[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
# 相當於:(留給大家思考,實際上我也沒想明白)

6、用法6

# 舉例6:列表推導式支持文件對象迭代
fp = open("D:\test.txt",'r',encoding = 'utf-8')
print([line for line in fp])
fp.close()

例題:

# 題目:打印出100以內的素數
# 答案
import math
l = [p for p in range(2,100) if 0 not in[p%d for d in range(2,int(math.sqrt(p))+1)]]
print(l)#-->[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

最後:

# 每日一句
print("勸君莫惜金縷衣,勸君惜取少年時")#--》我勸你不要太注重功名利祿,我勸你珍惜求學的最好時光

參考:那一定會很酷作者的博客


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved