十個(gè)驚艷的Pythonic單行代碼
自從我用 Python 編寫(xiě)第一行代碼以來(lái),我就被它的簡(jiǎn)單性、出色的可讀性和流行的單行代碼所吸引。在下文中,我想介紹和解釋其中的一些單行代碼——也許有一些你還不知道并且對(duì)你的下一個(gè) Python 項(xiàng)目很有用。
1.交換兩個(gè)變量
#?a?=?1;?b?=?2 a,?b?=?b,?a #?print(a,b)?>>?2?1
我們從經(jīng)典開(kāi)始:通過(guò)簡(jiǎn)單地交換賦值位置來(lái)交換變量的值——我認(rèn)為這是最直觀的方式。無(wú)需使用臨時(shí)變量。它甚至適用于兩個(gè)以上的變量。
2.多變量賦值
a,?b,?*c?=?[1,2,3,4,5] #?print(a,b,c)?>>?1?2?[3,?4,?5]
交換變量實(shí)際上是 Python 一次分配多個(gè)變量的能力的一個(gè)特例。在這里你可以使用它來(lái)將列表元素分配給給定的變量,這也稱為拆包。將*
再次打包剩余的值,這會(huì)產(chǎn)生一個(gè)子列表c
。它甚至適用于每個(gè)其他位置*
(例如列表的開(kāi)頭或中間部分)。
3. 對(duì)列表的每個(gè)第二個(gè)元素求和
#?a?=?[1,2,3,4,5,6] s?=?sum(a[1::2]) #?print(s)?>>?12
這里不需要特殊的 reduce 函數(shù),sum
只需添加每個(gè)給定 iterable 的項(xiàng)目。此處使用擴(kuò)展切片語(yǔ)法 [::]
來(lái)返回每隔一個(gè)元素。你可以將其讀作 [start : stop : step]
,因此[1::2]
轉(zhuǎn)換為從索引 1 的元素(第二個(gè)元素)開(kāi)始,直到列表結(jié)束才停止(沒(méi)有為第二個(gè)參數(shù)提供參數(shù))并且始終采取 2 steps。
4.刪除多個(gè)元素
#?a?=?[1,2,3,4,5] del?a[::2] #?print(a)?>>?[2,?4]
擴(kuò)展的切片語(yǔ)法也可用于一次刪除多個(gè)列表元素。
5. 將文件讀入行數(shù)組
c?=?[line.strip()?for?line?in?open('file.txt')] #?print(c)?>>?['test1',?'test2',?'test3',?'test4']
使用 Python 的內(nèi)聯(lián) for 循環(huán),你可以輕松地將文件讀入行數(shù)組。strip()
需要?jiǎng)h除尾隨換行符。如果你想保留它們或者它們對(duì)你來(lái)說(shuō)無(wú)關(guān)緊要,你可以使用更短的單線:
c?=?list(open('file.txt')) #?print(c)?>>?['test1\n',?'test2\n',?'test3\n',?'test4\n']
用 Python 讀取文件真的就是這么簡(jiǎn)單。旁注:你也可以根據(jù)需要使用該readlines()
方法。
6. 將字符串寫(xiě)入文件
with?open('file.txt',?'a')?as?f:?f.write('hello?world') #?print(list(open('file.txt')))?>>?['test1\n',?'test2\n',?'test3\n',?'test4\n',?'hello?world']
借助with
語(yǔ)句,你可以直接將內(nèi)容寫(xiě)入文件。確保使用正確的模式打開(kāi)文件(此處'a'
為附加內(nèi)容)。
7. 列表創(chuàng)建
l?=?[('Hi?'?+?x)?for?x?in?['Alice',?'Bob',?'Pete']] #?print(l)?>>?['Hi?Alice',?'Hi?Bob',?'Hi?Pete']
可以使用內(nèi)聯(lián) for 循環(huán)從其他列表動(dòng)態(tài)創(chuàng)建列表。你可以直接修改值,如本例中的字符串連接。
8.列表映射
l?=?list(map(int,?['1',?'2',?'3'])) #?print(l)?>>?[1,?2,?3]
你還可以使用 Pythonmap()
函數(shù)將每個(gè)列表元素轉(zhuǎn)換為另一種類型。
9. 創(chuàng)建集合
squares?=?{?x**2?for?x?in?range(6)?if?x?<?4?} #?print(squares)?>>?{0,?1,?4,?9}
它與sets相似,除了內(nèi)聯(lián) for 循環(huán),你甚至可以直接附加條件!
10.回文檢查
#?phrase?=?'deleveled' isPalindrome?=?phrase?==?phrase[::-1] #?print(isPalindrome)?>>?true
回文是一系列正向和反向讀取相同的字符。通常你需要一些循環(huán)和條件來(lái)檢查給定的字符串是否是回文。在 Python 中,你只需將字符串與其反向字符串進(jìn)行比較。除了使用切片運(yùn)算符[::-1]
,你還可以使用reverse()
函數(shù)來(lái)反轉(zhuǎn)字符串。
到此這篇關(guān)于十個(gè)驚艷的Pythonic單行代碼的文章就介紹到這了,更多相關(guān)Pythonic單行代碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于打開(kāi)pycharm有帶圖片md文件卡死問(wèn)題的解決
這篇文章主要介紹了基于打開(kāi)pycharm有帶圖片md文件卡死問(wèn)題的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04python如何實(shí)現(xiàn)常用的五種排序算法詳解
排序有很多種實(shí)現(xiàn)方法,比如冒泡排序、選擇排序、歸并排序、希爾排序、快速排序、插入排序、堆排序、基數(shù)排序等,這篇文章主要給大家介紹了關(guān)于python如何實(shí)現(xiàn)常用的五種排序算法,需要的朋友可以參考下2021-08-08python中的多線程鎖lock=threading.Lock()使用方式
這篇文章主要介紹了python中的多線程鎖lock=threading.Lock()使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06python 模擬網(wǎng)站登錄——滑塊驗(yàn)證碼的識(shí)別
這篇文章主要介紹了python 模擬網(wǎng)站登錄——滑塊驗(yàn)證碼的識(shí)別,幫助大家更好的理解和學(xué)習(xí)使用python的爬蟲(chóng)技術(shù),感興趣的朋友可以了解下2021-03-03Python網(wǎng)絡(luò)請(qǐng)求庫(kù)requests的10個(gè)基本用法
今天我們要聊聊Python中非常實(shí)用的一個(gè)庫(kù)——requests,這個(gè)庫(kù)讓發(fā)送HTTP請(qǐng)求變得超級(jí)簡(jiǎn)單,無(wú)論你是想抓取網(wǎng)頁(yè)數(shù)據(jù)還是測(cè)試API接口,requests都能派上大用場(chǎng),下面我們就一起來(lái)看看如何使用requests完成一些常見(jiàn)的任務(wù),需要的朋友可以參考下2024-10-10Python繪圖Matplotlib之坐標(biāo)軸及刻度總結(jié)
這篇文章主要介紹了Python繪圖Matplotlib之坐標(biāo)軸及刻度總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06Python編寫(xiě)運(yùn)維進(jìn)程文件目錄操作實(shí)用腳本示例
這篇文章主要為大家介紹了Python編寫(xiě)實(shí)用運(yùn)維進(jìn)程文件目錄的操作腳本示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05