這些看起來很呆的Python編寫習(xí)慣
hello我是啥都生,在這篇文章中,將介紹17個(gè)有很大改進(jìn)空間的Python編程案例,既然都用Python了,那么提供的輪子就趕緊用起來哈哈,一起看看吧~
1.使用多個(gè)打印語句
初級(jí)
如果想打印多個(gè)變量,部分人會(huì)覺得每個(gè)變量都應(yīng)該有自己的?print()
?語句,哈哈哈以前我也是
進(jìn)階
使用多個(gè)打印語句尤其是新手在使用 Python 編碼時(shí)最常犯的錯(cuò)誤,其實(shí),使用print()
,可以在單個(gè)打印語句中打印多個(gè)變量,如下所示:
上面的sep
參數(shù)指定使用相同打印語句(上面的?a
、b
?和c
)打印的各種變量之間的分隔符
注意,
end
參數(shù)用于指定print語句的結(jié)束符
在上面的代碼中,end='\n---\n'
參數(shù)打印換行符,再是?---
,然后是換行符
2. 使用Print語句代替日志記錄模塊
在小型項(xiàng)目中可能無關(guān)緊要,我自己也是喜歡print,但值得一提的是大型項(xiàng)目中日志就太重要了
初級(jí)
進(jìn)階
3.使用for循環(huán)打印相同的變量
初級(jí)
如標(biāo)題所述,我們的目標(biāo)是多次打印同一個(gè)變量
當(dāng)然,創(chuàng)建一個(gè)for循環(huán)打印,能說這有問題嗎,當(dāng)然沒什么問題
進(jìn)階
雖然寫一個(gè)for循環(huán)沒壞處,但沒必要,可以這樣
4.創(chuàng)建一個(gè)單獨(dú)的變量來跟蹤循環(huán)中的索引
初級(jí) - 1
為實(shí)現(xiàn)這一點(diǎn),通常會(huì)定義一個(gè)新變量idx
來跟蹤索引值并在每次迭代時(shí)遞增它,如下所示:
初級(jí) - 2
或者,創(chuàng)建一個(gè)range
迭代器來跟蹤索引,如下:
進(jìn)階
不得不提enumerate()
方法,使用此方法,可以跟蹤索引idx
和值i
,如下所示:
5.使用for循環(huán)將列表轉(zhuǎn)換為字符串

初級(jí)
如下所示,使用for循環(huán)一次拼接列表中的一個(gè)元素
進(jìn)階
其實(shí)將列表轉(zhuǎn)換為字符串的簡(jiǎn)便方法是使用join()
方法,如下所示:
這不僅能免于編寫一些不必要的長(zhǎng)代碼,而且與 for 循環(huán)方法一樣直觀。
6.使用for循環(huán)從列表中刪除重復(fù)項(xiàng)

初級(jí)
遍歷輸入列表并將唯一元素存儲(chǔ)在新列表中
進(jìn)階
其實(shí),集合就行啦,使用一行代碼就可以從列表中刪除重復(fù)項(xiàng)
二者可以相互轉(zhuǎn)換
7.使用for循環(huán)在列表中搜索元素
初級(jí)
假設(shè)想知道某個(gè)元素是否存在于列表(或集合)中并返回布爾(如果存在則為True
,否則為False
)
初級(jí)用法如下所示:
太復(fù)雜了
進(jìn)階
使用in
關(guān)鍵字將其簡(jiǎn)化為單行實(shí)現(xiàn)
?
8.使用索引變量迭代兩個(gè)相同size的可迭代對(duì)象
初級(jí)
類似于在第4節(jié)中所提,定義一個(gè)專門用于索引的變量,在兩個(gè)size相同的列表中取值,如下所示:
進(jìn)階
進(jìn)階一點(diǎn)的方法是使用zip()
函數(shù),將兩個(gè)可迭代對(duì)象中的相應(yīng)值配對(duì)
9.使用for循環(huán)反轉(zhuǎn)列表

初級(jí)
反向迭代列表并將元素添加到新列表,如下所示:
進(jìn)階
如果了解 Python 中的切片,那么一個(gè)簡(jiǎn)單的單行代碼就可以實(shí)現(xiàn)(其實(shí)內(nèi)置方法等都可以實(shí)現(xiàn))
10.使用for循環(huán)計(jì)算可迭代對(duì)象中元素的出現(xiàn)次數(shù)
初級(jí)
查找元素頻率的簡(jiǎn)單方法是使用for循環(huán)遍歷列表并計(jì)算次數(shù)
進(jìn)階
其實(shí)可以使用count()
方法:
同樣的,也可以在字符串中使用:
11.使用for循環(huán)獲取字符串的子字符串
初級(jí)
這里的目標(biāo)是返回一個(gè)長(zhǎng)度為n_chars
的子串,從位置start_index
開始
很多人解決這個(gè)問題的方法是使用for循環(huán),如下所示:
進(jìn)階
單行方法是使用切片,這樣可以避免編寫for循環(huán)
12.定義長(zhǎng)整型常量
假設(shè)想聲明一個(gè)值為 1021 的整型變量
初級(jí)
很多情況下,會(huì)連續(xù)寫入零并在鍵入時(shí)進(jìn)行計(jì)數(shù)
但是別人若要參考這段代碼,就得把所有的零都數(shù)一遍,當(dāng)場(chǎng)去世
進(jìn)階
為提高可讀性,可以用_
(下劃線)分隔,如下:
但這仍然很麻煩,還是要數(shù)零。
如果數(shù)字能以?a^b
?的形式表示,則可以改用?pow()
方法,或者科學(xué)計(jì)數(shù)法:
13.使用if條件更改字符串的大小寫
給定一個(gè)字符串,目標(biāo)是將大寫字母變?yōu)樾懀粗嗳?/p>
初級(jí)
檢查每個(gè)元素的情況,然后為每個(gè)情況設(shè)置特定條件
進(jìn)階
可以改用swapcase()
方法
14.獲得兩個(gè)集合的并集

初級(jí)
迭代這兩個(gè)集合并將元素添加到一個(gè)新集合中
進(jìn)階
Python 為兩個(gè)集合的并集提供了union()
方法
更重要的是,可以將其擴(kuò)展到任意數(shù)量的輸入集:
想象一下,需要編寫多少個(gè)for循環(huán)來合并這四個(gè)集合,同樣的集合還有求補(bǔ)、交等等便捷內(nèi)置方法
15.更改列表中所有元素的數(shù)據(jù)類型
給定一個(gè)表示整數(shù)的字符串列表,目標(biāo)是通過更改數(shù)據(jù)類型將它們轉(zhuǎn)換為整數(shù)列表
初級(jí)
循環(huán)遍歷列表并對(duì)單個(gè)元素進(jìn)行類型轉(zhuǎn)換
進(jìn)階
使用map()
,如下所示:
作為其第一個(gè)參數(shù),map()
方法接受一個(gè)函數(shù)?int
,第二個(gè)參數(shù)是一個(gè)可迭代對(duì)象?input_list
16.交換變量
給定兩個(gè)變量,目標(biāo)是將第一個(gè)變量的值傳遞給第二個(gè)變量,將第二個(gè)變量的值傳遞給第一個(gè)變量
初級(jí)
大多數(shù)寫慣了 C/C++ 的程序員采用的方法是定義一個(gè)新變量temp
進(jìn)階
而Python 允許在單個(gè)語句中進(jìn)行多次賦值,從而消除對(duì)臨時(shí)變量的需要,就是解包啦,之前教程都有說過
17.使用嵌套循環(huán)生成兩個(gè)列表的所有組合
給定兩個(gè)列表(a
的長(zhǎng)度為?n
,b
的長(zhǎng)度為m
),生成所有n*m
結(jié)構(gòu)
初級(jí)
編寫兩個(gè)嵌套的for循環(huán)并將所有組合添加到列表中
進(jìn)階
使用 itertools 庫中的product()
方法,如下所示:
事實(shí)上包括我在內(nèi),以前很多時(shí)候都習(xí)慣于用for循環(huán)等解決問題,其實(shí)就是對(duì)內(nèi)置函數(shù)/方法不熟悉~
以上內(nèi)容有任何錯(cuò)誤歡迎指出,我是啥都生,下期再見