前言
有用的 Python 單行代碼片段,只需一行代碼即可解決特定編碼問題!
在本文中,小編將分享20 個(gè) Python 一行代碼,你可以在 30 秒或更短的時(shí)間內(nèi)輕松學(xué)習(xí)它們。這種單行代碼將節(jié)省你的時(shí)間,并使你的代碼看起來更干凈且易于閱讀。
目錄
前言
1、一行 For 循環(huán)
2、一行 While 循環(huán)
3、一行 IF Else 語(yǔ)句
4、一行合并字典
5、一行函數(shù)
6、一行遞歸
7、一行數(shù)組過濾
8、一行異常處理
9、一行列表轉(zhuǎn)字典
10、一行多變量
11、一行交換值
12、一行排序
13、一行讀取文件
14、一行類
15、一行分號(hào)
16、一行打印
17、一行map函數(shù)
18、刪除列表第一行中的 Mul 元素
19、一行打印圖案
20、一行查找質(zhì)數(shù)
1、一行 For 循環(huán)
for 循環(huán)是一個(gè)多行語(yǔ)句,但是在 Python 中,我們可以使用列表推導(dǎo)式方法在一行中編寫 for 循環(huán)。以過濾小于250的值為例,查看下面的代碼示例。
#For循環(huán)在一行
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 循環(huán)
這個(gè) One-Liner 片段將向你展示如何在一行中使用 While 循環(huán)代碼,我已經(jīng)展示了兩種方法。
#方法?1?Single?Statement?
while?True:?print(1)?#infinite?1
#方法?2?多語(yǔ)句
x?=?0?
while?x?<?5:?print(x);?x=?x?+?1?#?0?1?2?3?4?5
3、一行 IF Else 語(yǔ)句
好吧,要在一行中編寫 IF Else 語(yǔ)句,我們將使用三元運(yùn)算符。三元的語(yǔ)法是“[on true] if [expression] else [on false]”。
我在下面的示例代碼中展示了 3 個(gè)示例,以使你清楚地了解如何將三元運(yùn)算符用于一行 if-else 語(yǔ)句。要使用 Elif 語(yǔ)句,我們必須使用多個(gè)三元運(yùn)算符。
#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("數(shù)據(jù)STUDIO")?if?E?==?2?else?
print("Low")?#?數(shù)據(jù)STUDIO?
?
#Example?3?only?if
if?3?>?2:?print("Exactly")?#?Exactly
4、一行合并字典
這個(gè) 單行代碼段將向你展示如何使用一行代碼將兩個(gè)字典合并為一個(gè)。下面我展示了兩種合并字典的方法。
#?在一行中合并字典
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、一行函數(shù)
我們有兩種方法可以在一行中編寫函數(shù),在第一種方法中,我們將使用與三元運(yùn)算符或單行循環(huán)方法相同的函數(shù)定義。
第二種方法是用 lambda 定義函數(shù)。查看下面的示例代碼以獲得更清晰的理解。
#函數(shù)在一行中
#方法一
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、一行遞歸
這個(gè)單行代碼片段將展示如何在一行中使用遞歸。我們將使用一行函數(shù)定義和一行 if-else 語(yǔ)句。下面是查找斐波那契數(shù)的示例。
#?單行遞歸
#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、一行數(shù)組過濾
Python 列表可以通過使用列表推導(dǎo)方法在一行代碼中進(jìn)行過濾。以過濾偶數(shù)列表為例。
#?一行中的數(shù)組過濾
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 中的運(yùn)行時(shí)錯(cuò)誤。你知道我們可以在一行中編寫這個(gè) Try except 語(yǔ)句嗎?通過使用 exec() 語(yǔ)句,我們可以做到這一點(diǎn)。
#?一行異常處理
#原始方式
try:
????print(x)
except:
????print("Error")
#單行方式
exec('try:print(x)?\nexcept:print("Error")')?#?錯(cuò)誤
9、一行列表轉(zhuǎn)字典
我們可以使用 Python enumerate() 函數(shù)將 List 轉(zhuǎn)換為一行字典。在enumerate() 中傳遞列表并使用dict() 將最終輸出轉(zhuǎn)換為字典格式。
#?字典在一行
mydict?=?["John",?"Peter",?"Mathew",?"Tom"]
mydict?=?dict(enumerate(mydict))
print(mydict)?#?{0:?'John',?1:?'Peter',?2:?'Mathew',?3:?'Tom'}
10、一行多變量
Python 允許在一行中進(jìn)行多個(gè)變量賦值。下面的示例代碼將向你展示如何做到這一點(diǎn)。
#多行變量
#正常方式
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、一行交換值
交換是編程中一項(xiàng)有趣的任務(wù),并且總是需要第三個(gè)變量名稱 temp 來保存交換值。這個(gè)單行代碼段將向你展示如何在沒有任何臨時(shí)變量的情況下交換一行中的值。
#換成一行
#正常方式
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、一行排序
排序是編程中的一個(gè)普遍問題,Python 有許多內(nèi)置的方法來解決這個(gè)排序問題。下面的代碼示例將展示如何在一行中進(jìn)行排序。
#?在一行中排序
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、一行讀取文件
不使用語(yǔ)句或正常讀取方法,也可以正確讀取一行文件。
#一行讀取文件
#正常方式
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?帶有動(dòng)態(tài)?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、一行分號(hào)
一行代碼片段中的分號(hào)將向你展示如何使用分號(hào)在一行中編寫多行代碼。
#?一行分號(hào)
#?例?1?
a?=?"Python";?b?=?"編程";?c?=?"語(yǔ)言";?print(a,?b,?c)
#?輸出
#?Python?編程語(yǔ)言
16、一行打印
這不是很重要的片段,但有時(shí)當(dāng)你不需要使用循環(huán)來執(zhí)行任務(wù)時(shí)它很有用。
#?一行打印
#正常方式
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函數(shù)
Map 函數(shù)是適用的高階函數(shù)。這將函數(shù)應(yīng)用于每個(gè)元素。下面是我們?nèi)绾卧谝恍写a中使用 map 函數(shù)的示例。
#在一行中map
print(list(map(lambda?a:?a?+?2,?[5,?6,?7,?8,?9,?10])))
#?輸出
#?[7,?8,?9,?10,?11,?12]
18、刪除列表第一行中的 Mul 元素
你現(xiàn)在可以使用 del 方法在一行代碼中刪除 List 中的多個(gè)元素,而無需進(jìn)行任何修改。
#?刪除一行中的Mul元素
mylist?=?[100,?200,?300,?400,?500]
del?mylist[1::2]
print(mylist)?#?[100,?300,?500]
19、一行打印圖案
現(xiàn)在你不再需要使用for循環(huán)來打印相同的圖案。你可以使用 print 語(yǔ)句和星號(hào) (*) 在一行代碼中執(zhí)行相同的操作。文章來源:http://www.zghlxwxcb.cn/news/detail-827994.html
#?在一行中打印圖案#?
#?正常方式
for?x?in?range(3):
????print('')
#?輸出
#???
#單行方式
print(''?*?3)?#????
print(''?*?2)?#???
print(''?*?1)?#?
20、一行查找質(zhì)數(shù)
此代碼段將向你展示如何編寫單行代碼來查找范圍內(nèi)的素?cái)?shù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-827994.html
#?查找質(zhì)數(shù)
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]
到了這里,關(guān)于20個(gè)非常有用的Python單行代碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!