25條很棒的Python一行代碼,建議收藏!

自從我用Python編寫(xiě)第一行代碼以來(lái),就被它的簡(jiǎn)單性、出色的可讀性和特別流行的一行代碼所吸引。
在下面,我將給大家介紹并解釋一些Python一行程序。
可能有些你還不知道,但對(duì)你未來(lái)的Python項(xiàng)目很有用。
▍1、交換兩個(gè)變量
#?a?=?4?b?=?5
a,b?=?b,a
#?print(a,b)?>>?5,4
讓我們通過(guò)交換兩個(gè)變量作為一個(gè)簡(jiǎn)單的開(kāi)始。
此方法是最簡(jiǎn)單、最直觀的方法之一,無(wú)需使用臨時(shí)變量或應(yīng)用算術(shù)操作即可編寫(xiě)。
▍2、多個(gè)變量賦值
a,b,c?=?4,5.5, Hello
#print(a,b,c)?>>?4,5.5,hello
你可以使用逗號(hào)和變量一次性將多個(gè)值分配給變量。使用此技術(shù),你可以一次分配多個(gè)數(shù)據(jù)類(lèi)型。?
你可以使用列表將值分配給變量。下面是將列表中的多個(gè)值分配給變量的示例。
a,b,*c?=?[1,2,3,4,5]
print(a,b,c)
>?1?2?[3,4,5]
▍3、列表中偶數(shù)的和
有很多方法可以做到這一點(diǎn),但最好和最簡(jiǎn)單的方法是使用列表索引和sum函數(shù)。
a?=?[1,2,3,4,5,6]
s?=?sum([num?for?num?in?a?if?num%2?==?0])
print(s)
>>?12
▍4、從列表中刪除多個(gè)元素
del是Python中用于從列表中刪除值的關(guān)鍵字。
####?Deleting?all?even
a?=?[1,2,3,4,5]
del?a[1::2]
print(a)
>[1,?3,?5]
a
▍5、讀取文件
lst?=?[line.strip()?for?line?in?open( data.txt )]
print(lst)
這里我們使用列表來(lái)處理。
首先,我們打開(kāi)一個(gè)文本文件,并使用for循環(huán),逐行讀取。?最后,使用strip刪除所有不必要的空間。?
通過(guò)使用列表功能,使得代碼更簡(jiǎn)單,更短。
list(open( data.txt ))
##Using?with?will?also?close?the?file?after?use
with?open("data.txt")?as?f:
????lst=[line.strip()?for?line?in?f]
print(lst)
▍6、將數(shù)據(jù)寫(xiě)入文件
with?open("data.txt", a ,newline=
)?as?f:?
????f.write("Python?is?awsome")
上面的代碼首先創(chuàng)建一個(gè)文件data.txt(如果沒(méi)有的話),然后它會(huì)在文件中寫(xiě)Python is awesome。
▍7、創(chuàng)建列表
lst?=?[i?for?i?in?range(0,10)]
print(lst)
>?[0,?1,?2,?3,?4,?5,?6,?7,?8,?9]
or
lst?=?list(range(0,10))
print(lst)
我們也可以使用相同的方法創(chuàng)建一個(gè)字符串列表。
lst?=?[("Hello?"+i)?for?i?in?[ Karl , Abhay , Zen ]]
print(lst)
>?[ Hello?Karl ,? Hello?Abhay ,? Hello?Zen ]
▍8、映射列表或類(lèi)型轉(zhuǎn)換整個(gè)列表
有時(shí)在我們的項(xiàng)目中,我們需要更改列表中所有元素的數(shù)據(jù)類(lèi)型。你想到的第一個(gè)方法可能是使用循環(huán),然后訪問(wèn)列表中的所有元素,然后一個(gè)接一個(gè)地更改元素的數(shù)據(jù)類(lèi)型。
這個(gè)方法是老派的,在Python中我們有一個(gè)映射函數(shù),可以為我們做這些工作。
list(map(int,[ 1 , 2 , 3 ]))
>?[1,?2,?3]
list(map(float,[1,2,3]))
>?[1.0,?2.0,?3.0]
[float(i)?for?i?in?[1,2,3]]
>?[1.0,?2.0,?3.0]
▍9、創(chuàng)建集合
我們用于創(chuàng)建列表的方法也可以用于創(chuàng)建集合。讓我們使用包含范圍內(nèi)所有偶數(shù)的平方根方法來(lái)創(chuàng)建一個(gè)集合。
####?Square?of?all?even?numbers?in?an?range
{x**2?for?x?in?range(10)?if?x%2==0}
>?{0,?4,?16,?36,?64}
▍10、Fizz Buzz
在這個(gè)測(cè)試中,我們需要編寫(xiě)一個(gè)程序來(lái)打印從1到20的數(shù)字。但如果是3的倍數(shù),打印Fizz,如果是5的倍數(shù),打印Buzz,如果同時(shí)是3和5的倍數(shù),打印FizzBuzz,否則打印數(shù)字。
看起來(lái)我們必須使用循環(huán)和多個(gè)if-else語(yǔ)句。如果你嘗試用其他語(yǔ)言來(lái)做,你可能需要寫(xiě)10行代碼,但是使用Python,我們可以只用一行代碼就實(shí)現(xiàn)FizzBuzz。
[ FizzBuzz ?if?i%3==0?and?i%5==0
????else? Fizz ?if?i%3==0?
????else? Buzz ?if?i%5==0?
????else?i??for?i?in?range(1,20)]
在上面的代碼中,我們使用列表理解來(lái)運(yùn)行一個(gè)從1到20的循環(huán),然后在循環(huán)的每次迭代中,我們檢查數(shù)字是否能被3或5整除。如果是,那么我們用Fizz或Buzz替換數(shù)值,或者用FizzBuzz數(shù)值。
▍11、回文
回文是一個(gè)數(shù)字或字符串,當(dāng)它被反轉(zhuǎn)時(shí)看起來(lái)是一樣的。
text?=? level
ispalindrome?=?text?==?text[::-1]
ispalindrome
>?True
▍12、用空格分隔的整數(shù)到一個(gè)列表
lis?=?list(map(int,?input().split()))
print(lis)
>?1?2?3?4?5?6?7?8
[1,?2,?3,?4,?5,?6,?7,?8]
▍13、Lambda函數(shù)
lambda函數(shù)是一個(gè)小型匿名函數(shù)。lambda函數(shù)可以接受任意數(shù)量的參數(shù),但只能有一個(gè)表達(dá)式。
#?Function?that?returns?square?of?any?number
sqr?=?lambda?x:?x?*?x
sqr(10)
>?100
▍14、檢查列表中數(shù)字的存在
num?=?5
if?num?in?[1,2,3,4,5]:
?????print( present )
>?present??
▍15、打印圖案
在Python中,我們只需要一行代碼就可以繪制出令人驚嘆的圖案。
n?=?5
print(
.join( ?? ?*?i?for?i?in?range(1,?n?+?1)))
>
??
????
??????
????????
????????????
▍16、查找階乘
階乘是一個(gè)整數(shù)和它下面所有整數(shù)的乘積。
import?math
n?=?6
math.factorial(n)
>?720??
▍17、斐波納契數(shù)列
一組數(shù)字,其中每個(gè)數(shù)字(斐波那契數(shù))是前面兩個(gè)數(shù)字的和。最簡(jiǎn)單的斐波那契數(shù)列1,1,2,3,5,8,13等等。可以使用列表推導(dǎo)式和for循環(huán)在一個(gè)范圍內(nèi)創(chuàng)建斐波那契數(shù)列。
fibo?=?[0,1]
[fibo.append(fibo[-2]+fibo[-1])?for?i?in?range(5)]
fibo
>?[0,?1,?1,?2,?3,?5,?8]??
▍18、質(zhì)數(shù)
質(zhì)數(shù)是一個(gè)只能被自身和1整除的數(shù)。例如:2、3、5、7等。為了在一個(gè)范圍內(nèi)生成質(zhì)數(shù),我們可以使用帶有filter和lambda的list函數(shù)來(lái)生成質(zhì)數(shù)。
list(filter(lambda?x:all(x?%?y?!=?0?for?y?in?range(2,?x)),?range(2,?13)))
>?[2,?3,?5,?7,?11]??
▍19、查找最大數(shù)值
findmax?=?lambda?x,y:?x?if?x?>?y?else?y?
findmax(5,14)
>?14
or?
max(5,14)??
在上面的代碼中,我們使用lambda函數(shù)檢查比較條件,并根據(jù)返回的最大值。
或者使用max()內(nèi)置函數(shù)。
▍20、線性代數(shù)
有時(shí)候我們需要將列表中的元素縮放2到5倍。下面的代碼解釋了如何做到這一點(diǎn)。
def?scale(lst,?x):
????return?[i*x?for?i?in?lst]?
scale([2,3,4],?2)
>?[4,6,8]??
▍21、矩陣轉(zhuǎn)置
您需要將所有行轉(zhuǎn)換為列,反之亦然。在Python中,可以使用zip函數(shù)在一行代碼中置換一個(gè)矩陣。
a=[[1,2,3],
???[4,5,6],
???[7,8,9]]?
transpose?=?[list(i)?for?i?in?zip(*a)]?
transpose
>?[[1,?4,?7],?[2,?5,?8],?[3,?6,?9]]
▍22、計(jì)數(shù)
當(dāng)我們需要知道某個(gè)值在文本中出現(xiàn)的次數(shù)時(shí),這是一個(gè)重要而有用的用例。在Python中,有re庫(kù)可以來(lái)幫你完成這項(xiàng)工作。
import?re
len(re.findall( python , python?is?a?programming?language.?python?is?python. ))
>?3
▍23、用其他文本替換文本
"python?is?a?programming?language.python?is?python".replace("python", Java )
>?Java?is?a?programming?language.?Java?is?Java
▍24、模擬拋硬幣
這可能不是那么重要,但當(dāng)你需要從一組給定的選擇中生成一些隨機(jī)選擇時(shí),它會(huì)非常有用。
import?random
random.choice([ Head ,"Tail"])
>?Head
▍25、生成組
groups?=?[(a,?b)?for?a?in?[ a ,? b ]?for?b?in?[1,?2,?3]]?
groups
>?[( a ,?1),?( a ,?2),?( a ,?3),?( b ,?1),?( b ,?2),?( b ,?3)]

程序員GitHub,現(xiàn)已正式上線!
接下來(lái)我們將會(huì)在該公眾號(hào)上,專(zhuān)注為大家分享GitHub上有趣的開(kāi)源庫(kù)包括Python,Java,Go,前端開(kāi)發(fā)等優(yōu)質(zhì)的學(xué)習(xí)資源和技術(shù),分享一些程序員圈的新鮮趣事。
年度爆款文案
2).學(xué)Python真香!我用100行代碼做了個(gè)網(wǎng)站,幫人PS旅行圖片,賺個(gè)雞腿吃
3).首播過(guò)億,火爆全網(wǎng),我分析了《乘風(fēng)破浪的姐姐》,發(fā)現(xiàn)了這些秘密?
9).發(fā)現(xiàn)一個(gè)舔狗福利!這個(gè)Python爬蟲(chóng)神器太爽了,自動(dòng)下載妹子圖片
點(diǎn)這里,獲取新手福利

