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

Python的推導式與三目運算符

編輯:Python

列表推導式

列表推導式可以簡化列表循環

  • 格式表達式 for 變量 in 列表 [if 條件語句](中括號裡的內容代表可省略)
  • 使用方式
"""快速生成一個包含1-20數字的列表"""
list1 = [i for i in range(1,21)]
"""快速生成一個包含1-20之間能被3整除的所有數字列表"""
list2 = [i for i in range(1,21) if i%3==0]
"""快速生成一個包含1-20之間能被3整除的所有數字的平方列表"""
list3 = [i*i for i in range(1,21) if i%3==0]
  • 替代for循環和filter函數:過濾出列表中所有是偶數的數字
test = [1,2,3,4,5,6,7,8,9,10]
"""使用普通循環"""
list1 = []
for i in test:
if i%2==0:
list1.append(i)
"""使用filter"""
list2 = list(filter(lambda i:i%2==0,test))
"""使用列表推導式"""
list3 = [i for i in test if i%2==0]
  • 替代for循環和map函數:將列表中所有的字符串轉為整數
test = ["1","2","3","4","5","6","7","8","9","10"]
"""使用普通循環"""
list1 = []
for i in test:
list1.append(int(i))
"""使用filter"""
list2 = list(map(lambda i:int(i),test))
"""使用列表推導式"""
list3 = [int(i) for i in test]
  • 注意:列表推導式適用於單層循環,當出現兩層及以上多層循環使用推導式反而會適得其反,盡管簡化了代碼,但會使得簡化後的代碼內容變的晦澀難懂,結構也不清晰,十分不宜與閱讀和修改。
"""使用普通循環"""
list1 = []
for i in range(1,5):
for j in range(1,i):
if j%2 == 0:
list1.append((i,j))
"""使用列表推導式"""
list2 = [(i,j) for i in range(1,5) for j in range(1,i) if j%2==0]

字典推導式

字典推導式可以簡化字典循環

  • 格式:{v: k for k, v in 字典 [if 條件語句]} (中括號裡的內容代表可省略)
  • 舉例1:將字典中key值轉化為大寫
test = {
"a":5,"B":10,"c":15,"D":20}
"""使用普通循環"""
dict1 = {
}
for k,v in test.items():
dict1[k.upper()] = v
"""使用字典推導式"""
dict2 = {
k.upper():v for k,v in test.items()}
  • 舉例2:過濾出字典中中所有value是偶數的鍵值對
test = {
"a":5,"B":10,"c":15,"D":20}
"""使用普通循環"""
dict1 = {
}
for k,v in test.items():
if v%2==0:
dict1[k] = v
"""使用字典推導式"""
dict2 = {
k:v for k,v in test.items() if v%2==0}

三目運算符

三目運算符可以簡化選擇

  • 格式:exp1 if 條件語句 else exp2

  • 運行過程:如果條件語句為真,就執行並返回exp1,否則就執行並返回 exp2

"""簡化前"""
if a>b:
max = a;
else:
max = b;
"""簡化後"""
max = a if a>b else b

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