天天看點

20個非常有用的Python單行代碼

作者:散文随風想

在本文中,給大家分享20 個 Python 一行代碼,你可以在 30 秒或更短的時間内輕松學習它們。這種單行代碼将節省你的時間,并使你的代碼看起來更幹淨且易于閱讀。

1 一行 For 循環

for 循環是一個多行語句,但是在 Python 中,我們可以使用清單推導式方法在一行中編寫 for 循環。以過濾小于250的值為例,檢視下面的代碼示例。

#For循環在一行
mylist = [200, 300, 400, 500]
#正常方式
result = [] for x in mylist: 
    if x > 250: 
        result.append(x) 
print(result) # [300, 400, 500]#一行代碼方式
result = [x for x in mylist if x > 250] 
print(result) # [300, 400, 500]           

2 一行 While 循環

這個 One-Liner 片段将向你展示如何在一行中使用 While 循環代碼,我已經展示了兩種方法。

#方法 1 Single Statement 
while True: print(1) #infinite 1
#方法 2 多語句
x = 0 
while x < 5: print(x); x= x + 1 # 0 1 2 3 4 5           

3 一行 IF Else 語句

好吧,要在一行中編寫 IF Else 語句,我們将使用三元運算符。三元的文法是“[on true] if [expression] else [on false]”。

我在下面的示例代碼中展示了 3 個示例,以使你清楚地了解如何将三元運算符用于一行 if-else 語句。要使用 Elif 語句,我們必須使用多個三元運算符。

#if Else 在一行中
#Example 1 if else
print("Yes") if 8 > 9 else print("No") # No
#Example 2 if elif else 
E = 2 
print("High") if E == 5 else print("資料STUDIO") if E == 2 else 
print("Low") # 資料STUDIO 
 
#Example 3 only if
if 3 > 2: print("Exactly") # Exactly           

4 一行合并字典

這個 單行代碼段将向你展示如何使用一行代碼将兩個字典合并為一個。下面我展示了兩種合并字典的方法。

# 在一行中合并字典
d1 = { 'A': 1, 'B': 2 } 
d2 = { 'C': 3, 'D': 4 }
#方法 1 
d1.update(d2) 
print(d1) # {'A': 1, 'B': 2, 'C': 3, 'D': 4}
#方法 2 
d3 = {**d1, **d2} 
print(d3) # {'A': 1, 'B': 2, 'C': 3, 'D': 4}           

5 一行函數

我們有兩種方法可以在一行中編寫函數,在第一種方法中,我們将使用與三元運算符或單行循環方法相同的函數定義。

第二種方法是用 lambda 定義函數。檢視下面的示例代碼以獲得更清晰的了解。

#函數在一行中
#方法一
def fun(x): return True if x % 2 == 0 else False 
print(fun(2)) # False
#方法2
fun = lambda x : x % 2 == 0 
print(fun(2)) # True 
print(fun(3)) # False           

6 一行遞歸

這個單行代碼片段将展示如何在一行中使用遞歸。我們将使用一行函數定義和一行 if-else 語句。下面是查找斐波那契數的示例。

# 單行遞歸
#Fibonaci 單行遞歸示例
def Fib(x): return 1 if x in {0, 1} else Fib(x-1) + Fib(x-2)
print(Fib(5)) # 8
print(Fib(15)) # 987           

7 一行數組過濾

Python 清單可以通過使用清單推導方法在一行代碼中進行過濾。以過濾偶數清單為例。

# 一行中的數組過濾
mylist = [2, 3, 5, 8, 9, 12, 13, 15]
#正常方式
result = [] 
for x in mylist: 
    if x % 2 == 0: 
        result.append(x)
print(result) # [2, 8, 12]
# 單線方式
result = [x for x in mylist if x % 2 == 0] 
print(result) # [2, 8, 12]           

8 一行異常處理

我們使用異常處理來處理 Python 中的運作時錯誤。你知道我們可以在一行中編寫這個 Try except 語句嗎?通過使用 exec() 語句,我們可以做到這一點。

# 一行異常處理
#原始方式
try:
    print(x)
except:
    print("Error")
#單行方式
exec('try:print(x) \nexcept:print("Error")') # 錯誤           

9 一行清單轉字典

我們可以使用 Python enumerate() 函數将 List 轉換為一行字典。在enumerate() 中傳遞清單并使用dict() 将最終輸出轉換為字典格式。

# 字典在一行
mydict = ["John", "Peter", "Mathew", "Tom"]
mydict = dict(enumerate(mydict))
print(mydict) # {0: 'John', 1: 'Peter', 2: 'Mathew', 3: 'Tom'}           

10 一行多變量

Python 允許在一行中進行多個變量指派。下面的示例代碼将向你展示如何做到這一點。

#多行變量
#正常方式
x = 5 
y = 7 
z = 10 
print(x , y, z) # 5 7 10
#單行方式
a, b, c = 5, 7, 10 
print(a, b, c) # 5 7 10           

11 一行交換值

交換是程式設計中一項有趣的任務,并且總是需要第三個變量名稱 temp 來儲存交換值。這個單行代碼段将向你展示如何在沒有任何臨時變量的情況下交換一行中的值。

#換成一行
#正常方式
v1 = 100
v2 = 200
temp = v1
v1 = v2 
v2 = temp
print(v1, v2) # 200 100
# 單行交換
v1, v2 = v2, v1 
print(v1, v2) # 200 100           

12 一行排序

排序是程式設計中的一個普遍問題,Python 有許多内置的方法來解決這個排序問題。下面的代碼示例将展示如何在一行中進行排序。

# 在一行中排序
mylist = [32, 22, 11, 4, 6, 8, 12] 
# 方法 1
mylist.sort() 
print(mylist) # # [4, 6, 8, 11, 12, 22, 32]
print(sorted(mylist)) # [4, 6, 8, 11, 12, 22, 32]           

13 一行讀取檔案

不使用語句或正常讀取方法,也可以正确讀取一行檔案。

#一行讀取檔案
#正常方式
with open("data.txt", "r") as file: 
    data = file.readline() 
    print(data) # Hello world
#單行方式
data = [line.strip() for line in open("data.txt","r")] 
print(data) # ['hello world', 'Hello Python']           

14 一行類

上課總是多線工作。但是在 Python 中,有一些方法可以在一行代碼中使用類特性。

# 一行中的類
#普通方式
class Emp: 
    def __init__(self, name, age): 
        self.name = name 
        self.age = age
        emp1 = Emp("雲朵君", 22) 
print(emp1.name, emp1.age) # 雲朵君 22
#單行方式
#方法 1 帶有動态 Artibutes 的 Lambda


Emp = lambda:None; Emp.name = "雲朵君"; Emp.age = 22
print(Emp.name, Emp.age) # 雲朵君 22


#方法 2 
from collections import namedtuple
Emp = namedtuple('Emp', ["name", "age"]) ("雲朵君", 22) 
print(Emp.name, Emp.age) # 雲朵君 22           

15 一行分号

一行代碼片段中的分号将向你展示如何使用分号在一行中編寫多行代碼。

# 一行分号
# 例 1 
a = "Python"; b = "程式設計"; c = "語言"; print(a, b, c)
# 輸出
# Python 程式設計語言           

16 一行列印

這不是很重要的片段,但有時當你不需要使用循環來執行任務時它很有用。

# 一行列印
#正常方式
for x in range(1, 5):
    print(x) # 1 2 3 4
#單行方式
print(*range(1, 5)) # 1 2 3 4
print(*range(1, 6)) # 1 2 3 4 5           

17 一行map函數

Map 函數是适用的高階函數。這将函數應用于每個元素。下面是我們如何在一行代碼中使用 map 函數的示例。

#在一行中map
print(list(map(lambda a: a + 2, [5, 6, 7, 8, 9, 10])))
# 輸出
# [7, 8, 9, 10, 11, 12]           

18 删除清單第一行中的 Mul 元素

你現在可以使用 del 方法在一行代碼中删除 List 中的多個元素,而無需進行任何修改。

# 删除一行中的Mul元素
mylist = [100, 200, 300, 400, 500]
del mylist[1::2]
print(mylist) # [100, 300, 500]           

19 一行列印圖案

現在你不再需要使用for循環來列印相同的圖案。你可以使用 print 語句和星号 (*) 在一行代碼中執行相同的操作。

# 在一行中列印圖案# 
# 正常方式
for x in range(3):
    print('')
# 輸出
#   
#單行方式
print('' * 3) #    
print('' * 2) #   
print('' * 1) #            

20 一行查找質數

此代碼段将向你展示如何編寫單行代碼來查找範圍内的素數。

# 查找質數
print(list(filter(lambda a: all(a % b != 0 for b in range(2, a)),
                  range(2,20))))
# 輸出
# [2, 3, 5, 7, 11, 13, 17, 19]