Python 是一種真正美妙的語(yǔ)言。當(dāng)有人想出一個(gè)好主意時(shí),大約需要 1 分鐘和 5 行代碼來(lái)編寫(xiě)幾乎可以滿(mǎn)足您要求的東西。然后只需要一個(gè)小時(shí)就可以將腳本擴(kuò)展到 300 行,之后它仍然幾乎可以滿(mǎn)足您的需求。
“Python 是一種真正美妙的語(yǔ)言。當(dāng)有人想出一個(gè)好主意時(shí),大約需要 1 分鐘和 5 行代碼來(lái)編寫(xiě)幾乎可以滿(mǎn)足您要求的東西。然后只需要一個(gè)小時(shí)就可以將腳本擴(kuò)展到 300 行,之后它仍然幾乎可以滿(mǎn)足您的需求。” - 杰克詹森
你可能使用循環(huán)來(lái)打印 N 次字符串。但我將向你展示了:在一小行代碼中打印 N 次字符串的優(yōu)美方法。
string = "Python "ntimes = string * 3print(ntimes) # Python Python Python
有時(shí)候函數(shù)需要返回多個(gè)值,我們可以用下面的方式來(lái)實(shí)現(xiàn):
def MultiReturn(): return 1,2,3a, b, c = MultiReturn()print(a,b,c) # 1 2 3
你知道我們可以在 Python 中獲取任何導(dǎo)入模塊的文件路徑嗎?當(dāng)你需要知道模塊的路徑時(shí),這是一個(gè)了不起的功能。查看以下代碼示例:
import osimport jsonprint(os) # <module 'os' from '/usr/lib/python3.6/os.py'>print(json) # <module 'json' from '/usr/lib/python3.6/json/__init__.py'>
要看懂下面代碼,你可能要深入了解 Python 切片操作。
string = "Python"print(string[::-1]) # nohtyP
語(yǔ)法:string[start:end:stop]
許多其他語(yǔ)言 C++、Java、JavaScript 只允許對(duì)變量進(jìn)行一次賦值。但是 Python 允許你執(zhí)行多個(gè)分配,這在不同情況下非常有用。
a, b = 1, 2print(a,b) # 1 2
python 中,你不再需要循環(huán)來(lái)從列表中刪除重復(fù)項(xiàng),你可以使用內(nèi)置函數(shù)以快速簡(jiǎn)便的方式完成此操作。看看下面的代碼。
lst1 = [1, 3, 3, 4, 5, 1]lst2 = ["A", "A", "B", "C", "D", "D"]print(set(lst1)) # {1, 3, 4, 5}print(set(lst2)) # {'A', 'B', 'C', 'D'}
你通常使用 + 一元運(yùn)算符來(lái)格式化字符串。簡(jiǎn)而言之,當(dāng)想將變量與字符串附加在一起時(shí),可以使用一元運(yùn)算符 + 。但我將向你展示如何以簡(jiǎn)單快捷的方式進(jìn)行這種格式化。
name = "John"age = 23# method 1print("My name is " + name + " and I am " + str(age)) # My name is John and I am 23# method 2print("My name is {0} and I am {1}".format(name, age)) # My name is John and I am 23# method 3print(f"My name is {name} and I am {age}") # My name is John and I am 23
你可以在 Python 中初始化空容器。簡(jiǎn)而言之,可以在不分配值或填充它們的情況下聲明數(shù)據(jù)結(jié)構(gòu)。
lst = [] # 初始化一個(gè)空列表dct = {} # 初始化一個(gè)空字典tpl = () # 初始化一個(gè)空元組set = set() # 初始化一個(gè)空集合
你知道Python內(nèi)置模塊sys可以告訴你一個(gè)對(duì)象在python中消耗了多少內(nèi)存嗎?
import sysprint(sys.getsizeof(1)) # 28print(sys.getsizeof(1.0)) # 24print(sys.getsizeof(True)) # 1print(sys.getsizeof(None)) # 1print(sys.getsizeof("Hello")) # 56print(sys.getsizeof([])) # 40print(sys.getsizeof(())) # 40print(sys.getsizeof({})) # 40print(sys.getsizeof(set())) # 40
參照本文第4條,反轉(zhuǎn)字符串。
lst = [1, 3, 3, 4, 5, 1]print(lst[::-1]) # [1, 5, 4, 3, 3, 1]
我將分享一個(gè)示例代碼來(lái)反轉(zhuǎn)字典。簡(jiǎn)而言之,鍵和值將交換它們的位置。
dict = {'x' : 1, 'y' : 2, 'z' : 3}new_dict = { value : key for key , value in dict.items()}print(new_dict) # {1: 'x', 2: 'y', 3: 'z'}## 嘗試下下面代碼,有驚喜dict = {'x' : 1, 'y' : 2, 'z' : 2}new_dict = { value : key for key , value in dict.items()}print(new_dict) # {1: 'x', 2: 'z'}
本文前面,我們已經(jīng)學(xué)會(huì)了如何完成多變量復(fù)制。在這個(gè)技巧中,我們將學(xué)習(xí)多變量復(fù)制的高級(jí)方法。
a, *b, c, d = 3, 4, 5, 6, 7print(a) # 3print(b) # [4, 5]print(c) # 6print(d) # 7## ?? 嘗試下下面代碼a, *b, c= 3, 4, 5, 6, 7print(a) # 3print(b) # [4, 5, 6]print(c) # 7
您可能使用循環(huán)來(lái)迭代列表并將列表的每個(gè)項(xiàng)連接在一起。但是需要很多行代碼才能完成。此時(shí)可用join()方法以快速簡(jiǎn)便的方式完成此操作。
lst = ['a', 'b', 'c']print(''.join(lst)) # abc
dict1 = {'a' : 1, 'b' : 2}dict2 = {'c' : 3, 'd' : 4}dict3 = {**dict1, **dict2}print(dict3) # {'a': 1, 'b': 2, 'c': 3, 'd': 4}
當(dāng)使用遞歸函數(shù)時(shí), Python其實(shí)已將默認(rèn)將遞歸限制設(shè)置為1000,但可以通過(guò)如下代碼修改其限制:
import syscurrent_recursion_limit = sys.getrecursionlimit()print(current_recursion_limit) # 1000set_limit = sys.setrecursionlimit(2000)print(set_limit) # 2000
你可能已經(jīng)使用過(guò) startwith 和 endwith 方法來(lái)搜索字符串中的前綴或者后綴。但是你不一定知道他們可以使用多個(gè)條件。
string1 = 'abc.xls'# method 1if string1.endswith('.xls') or string1.endswith('.xlsx'): print('Yes')# method 2if string1.endswith(('.xls','.xlsx')): print('Yes')
a = [1, 2, 3]x = 1# method 1if a[0] == x or a[1] == x or a[2] == x: print('Number X is present in the list')# method 2if x in a: print('Number X is present in the list')
上面分享的17個(gè)提供python的技巧,希望對(duì)你有所幫助!
本文鏈接:http://www.www897cc.com/showinfo-26-52166-0.html17個(gè)提升Python的編碼技巧,從此鍵盤(pán)飛起
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com