python實(shí)用的快捷語(yǔ)法技巧大全
前言
你知道a**3是什么意思嗎?
你知道怎么打印模塊路徑嗎?
你知道reduce()函數(shù)怎么用和列表怎么拼接字符串嗎?
然而你可能全都知道
但是還是往下看看吧,可能會(huì)有你不知道的python小技巧學(xué)會(huì)它讓你的效率提升不止一倍?。?!
in判斷
可以直接用來判斷某個(gè)變量是否在列表中
我們可以使用下面的方式來驗(yàn)證多個(gè)值:
if 7 in [1,3,5,7,9]: print("肥學(xué)") 答案: 肥學(xué) 就不用再用: if m==1 or m==3 or m==5 or m==7:
四種翻轉(zhuǎn)字符串/列表的方式
翻轉(zhuǎn)列表本身 testList = [1, 3, 5] testList.reverse() print(testList) #-> [5, 3, 1]
在一個(gè)循環(huán)中翻轉(zhuǎn)并迭代輸出 for element in reversed([1,3,5]): print(element) #1-> 5 #2-> 3 #3-> 1
一行代碼翻轉(zhuǎn)字符串 "Test Python"[::-1] #輸出 “nohtyP tseT” 更多例子: >>> a=[1,2,3,4,5,6,7] >>> b=(1,2,3,4,5,6,7) >>> c='Let me show you a little thing' >>> a[::-1] [7, 6, 5, 4, 3, 2, 1] >>> b[::-1] (7, 6, 5, 4, 3, 2, 1) >>> c[::-1] 'gniht elttil a uoy wohs em teL' >>> a [1, 2, 3, 4, 5, 6, 7] >>> b (1, 2, 3, 4, 5, 6, 7) >>> c 'Let me show you a little thing' >>> a.reverse() >>> a [7, 6, 5, 4, 3, 2, 1] 相對(duì)reverse而言,切片的方法不會(huì)改變列表的結(jié)構(gòu),所以這是在實(shí)際應(yīng)用中比較有用的一個(gè)技巧
使用切片翻轉(zhuǎn)列表 [1, 3, 5][::-1] #輸出 [5,3,1]
平方數(shù)
a=5 a**2=25 a**3=125
進(jìn)制轉(zhuǎn)換
dec = input('10進(jìn)制數(shù)為:') print("轉(zhuǎn)換為二進(jìn)制為:", bin(dec)) print("轉(zhuǎn)換為八進(jìn)制為:", oct(dec)) print("轉(zhuǎn)換為十六進(jìn)制為:", hex(dec)) string1 = '101010' print('二進(jìn)制字符串轉(zhuǎn)換成十進(jìn)制數(shù)為:',int(string1,2)) string1 = '367' print('八進(jìn)制字符串轉(zhuǎn)換成十進(jìn)制數(shù)為:',int(string1,8)) string3 = 'FFF' print('十六進(jìn)制字符串轉(zhuǎn)換成十進(jìn)制數(shù)為:',int(string1,16))
將字符串中的小寫字母轉(zhuǎn)為大寫字母
str = "this is string example from runoob....wow!!!"; print ("str.upper() : ", str.upper()) 以上實(shí)例輸出結(jié)果如下: str.upper() : THIS IS STRING EXAMPLE FROM RUNOOB....WOW!!!
一次性初始化多個(gè)變量
a,b,c,d=1,2,3,4 可以利用列表 List = [1,2,3] x,y,z=List print(x, y, z) #-> 1 2 3
打印模塊路徑
import socket print(socket) #<module 'socket' from '/usr/lib/python2.7/socket.py'>
列表去重
list0 = [1, 2, 3, 2, 2, 5, 6, 5] list0 = list(set(list0)) >>> list0 [1, 2, 3, 5, 6]
字典和列表推導(dǎo)
#列表 l=[[0 for i in range(4)] for i in range(4)]#生成二維列表 print(l) # [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
#字典推導(dǎo) testDict = {i: i * i for i in xrange(10)} testSet = {i * 2 for i in xrange(10)} print(testSet) print(testDict) #set([0, 2, 4, 6, 8, 10, 12, 14, 16, 18]) #{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
拼接字符串
你可能見過這個(gè)拼接方法 a="i " b="love " c="you" print(a+b+c)
看看這個(gè) l=['a','b','c'] print(''join(l)) #以join左邊的字符做分割
循環(huán)枚舉索引
很方便的找到下標(biāo)和對(duì)應(yīng)元素 list = [10, 20, 30] for i, value in enumerate(list): print(i, ': ', value) #1-> 0 : 10 #2-> 1 : 20 #3-> 2 : 30
開啟文件分享
Python 允許運(yùn)行一個(gè) HTTP 服務(wù)器來從根路徑共享文件,命令會(huì)在默認(rèn)端口也就是 8000 開啟一個(gè)服務(wù)器,你可以將一個(gè)自定義的端口號(hào)以最后一個(gè)參數(shù)的方式傳遞到上面的命令中。下面是開啟服務(wù)器的命令
python3 -m http.server
巧用else語(yǔ)句(重要)
python的else 子句不僅能在 if 語(yǔ)句中使用,還能在 for、while 和 try 等語(yǔ)句中使用,這個(gè)語(yǔ)言特性不是什么秘密,但卻沒有得到重視。
l=[1,2,3,4,5] for i in l: if i=='6': print(666) break else: print(999)
split
Python split() 通過指定分隔符對(duì)字符串進(jìn)行切片,如果參數(shù) num 有指定值,則僅分隔 num 個(gè)子字符串。
語(yǔ)法:
str.split(str="", num=string.count(str))
簡(jiǎn)化:
str.split("")
reduce
reduce把一個(gè)函數(shù)作用在一個(gè)序列[x1, x2, x3, ...]上,這個(gè)函數(shù)必須接收兩個(gè)參數(shù),reduce把結(jié)果繼續(xù)和序列的下一個(gè)元素做累積計(jì)算
簡(jiǎn)單例子:
>>> from functools import reduce >>> def fn(x, y): ? ? ? ? return x * 10 + y >>> reduce(fn, [1, 3, 5, 7, 9]) 13579
我們把最近的知識(shí)結(jié)合起來做一道題
輸入一個(gè)int型整數(shù),按照從右向左的閱讀順序,返回一個(gè)不含重復(fù)數(shù)字的新的整數(shù)。
result="" for i in input()[::-1]: if i not in result: result+=i print(result)
sorted
>>> sorted([36, 5, -12, 9, -21]) [-21, -12, 5, 9, 36] #可以接收一個(gè)key函數(shù)來實(shí)現(xiàn)自定義的排序,例如按絕對(duì)值大小排序: >>> sorted([36, 5, -12, 9, -21], key=abs) [5, 9, -12, -21, 36]
我們?cè)倏匆粋€(gè)字符串排序的例子:
>>> sorted(['bob', 'about', 'Zoo', 'Credit']) ['Credit', 'Zoo', 'about', 'bob']
我們給sorted傳入key函數(shù),即可實(shí)現(xiàn)忽略大小寫的排序:
>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower) ['about', 'bob', 'Credit', 'Zoo']
要進(jìn)行反向排序,不必改動(dòng)key函數(shù),可以傳入第三個(gè)參數(shù)reverse=True:
>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True) ['Zoo', 'Credit', 'bob', 'about']
執(zhí)行一個(gè)字符串表達(dá)式,并返回表達(dá)式的值
>>>x = 7 >>> eval( '3 * x' ) 21 >>> eval('pow(2,2)') 4 >>> eval('2 + 2') 4 >>> n=81 >>> eval("n + 4") 85
總結(jié)
到此這篇關(guān)于python實(shí)用的快捷語(yǔ)法技巧的文章就介紹到這了,更多相關(guān)python快捷語(yǔ)法技巧內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python2中的raw_input() 與 input()
這篇文章主要介紹了Python2中的raw_input() 與 input(),本文分析了它們的內(nèi)部實(shí)現(xiàn)和不同之處,并總結(jié)了什么情況下使用哪個(gè)函數(shù),需要的朋友可以參考下2015-06-06解決matplotlib.pyplot在Jupyter notebook中不顯示圖像問題
這篇文章主要介紹了解決matplotlib.pyplot在Jupyter notebook中不顯示圖像問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04