?1、原地交換兩個(gè)數(shù)字
1 2 3 4 | x,?y? = 10 ,? 20 print (x,?y) y,?x? = ?x,?y print (x,?y) |
10 20
20 10
2、鏈狀比較操作符
1 2 3 | n? = ?10 print ( 1 ?<?n?<? 20 ) print ( 1 ?>?n?< = ?9 ) |
True
False
3、使用三元操作符來實(shí)現(xiàn)條件賦值
[表達(dá)式為真的返回值] if [表達(dá)式] else [表達(dá)式為假的返回值]
1 2 3 | y? = ?20 x? = ?9 ?if ?(y? = = ?10 )? else ?8 print (x) |
8
# 找abc中最小的數(shù)
1 2 3 4 5 6 | def ?small(a,?b,?c): ???? return ?a? if ?a<b? and ?a<c? else ?(b? if ?b<a? and ?b<c? else ?c) print (small( 1 ,? 0 ,? 1 )) print (small( 1 ,? 2 ,? 2 )) print (small( 2 ,? 2 ,? 3 )) print (small( 5 ,? 4 ,? 3 )) |
0
1
3
3
1 2 3 | #?列表推導(dǎo) x? = ?[m * * 2 ?if ?m> 10 ?else ?m * * 4 ?for ?m? in ?range ( 50 )] print (x) |
[0, 1, 16, 81, 256, 625, 1296, 2401, 4096, 6561, 10000, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400, 441, 484, 529, 576, 625, 676, 729, 784, 841, 900, 961, 1024, 1089, 1156, 1225, 1296, 1369, 1444, 1521, 1600, 1681, 1764, 1849, 1936, 2025, 2116, 2209, 2304, 2401]
4、多行字符串
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | multistr? = ?"select? * ?from ?multi_row?\ where?row_id?<? 5 " print (multistr) select? * ?from ?multi_row?where?row_id?<? 5 multistr? = ?"""select?*?from?multi_row where?row_id?<?5""" print (multistr) select? * ?from ?multi_row where?row_id?<? 5 multistr? = ?( "select?*?from?multi_row" "where?row_id?<?5" "order?by?age" ) print (multistr) select? * ?from ?multi_rowwhere?row_id?<? 5order ?by?age |
5、存儲(chǔ)列表元素到新的變量
1 2 3 | testList? = ?[ 1 ,? 2 ,? 3 ] x,?y,?z? = ?testList???? #?變量個(gè)數(shù)應(yīng)該和列表長(zhǎng)度嚴(yán)格一致 print (x,?y,?z) |
1 2 3
6、打印引入模塊的絕對(duì)路徑
1 2 3 4 5 6 | import ?threading import ?socket print (threading) print (socket) <module? 'threading' ?from ?'d:\\python351\\lib\\threading.py' > <module? 'socket' ?from ?'d:\\python351\\lib\\socket.py' > |
7、交互環(huán)境下的“_”操作符
在python控制臺(tái),不論我們測(cè)試一個(gè)表達(dá)式還是調(diào)用一個(gè)方法,結(jié)果都會(huì)分配給一個(gè)臨時(shí)變量“_”
8、字典/集合推導(dǎo)
1 2 3 4 | testDic? = ?{i:?i? * ?i? for ?i? in ?range ( 10 )} testSet? = ?{i? * ?2 ?for ?i? in ?range ( 10 )} print (testDic) print (testSet) |
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
{0, 2, 4, 6, 8, 10, 12, 14, 16, 18}
9、調(diào)試腳本
用pdb模塊設(shè)置斷點(diǎn)
1 2 | import ?pdb pdb.ste_trace() |
10、開啟文件分享
python允許開啟一個(gè)HTTP服務(wù)器從根目錄共享文件
11、檢查python中的對(duì)象
1 2 | test? = ?[ 1 ,? 3 ,? 5 ,? 7 ] print ( dir (test)) |
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
1 2 | test? = ?range ( 10 ) print ( dir (test)) |
['__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index', 'start', 'step', 'stop']
12、簡(jiǎn)化if語句
1 2 3 4 | #?use?following?way?to?verify?multi?values if ?m? in ?[ 1 ,? 2 ,? 3 ,? 4 ]: #?do?not?use?following?way if ?m = = 1 ?or ?m = = 2 ?or ?m = = 3 ?or ?m = = 4 : |
13、運(yùn)行時(shí)檢測(cè)python版本
1 2 3 4 | import ?sys if ?not ?hasattr (sys,? "hexversion" )? or ?sys.version_info?! = ?( 2 ,? 7 ): ???? print ( "sorry,?you?are?not?running?on?python?2.7" ) ???? print ( "current?python?version:" ,?sys.version) |
sorry, you are not running on python 2.7
current python version: 3.5.1 (v3.5.1:37a07cee5969, Dec? 6 2015, 01:54:25) [MSC v.1900 64 bit (AMD64)]
14、組合多個(gè)字符串
1 2 3 | test? = ?[ "I" ,? "Like" ,? "Python" ] print (test) print ("".join(test)) |
['I', 'Like', 'Python']
ILikePython
15、四種翻轉(zhuǎn)字符串、列表的方式
5
3
1
16、用枚舉在循環(huán)中找到索引
1 2 3 | test? = ?[ 10 ,? 20 ,? 30 ] for ?i,?value? in ?enumerate (test): ???? print (i,? ':' ,?value) |
0 : 10
1 : 20
2 : 30
17、定義枚舉量
1 2 3 4 5 6 | class ?shapes: ???? circle,?square,?triangle,?quadrangle? = ?range ( 4 ) print (shapes.circle) print (shapes.square) print (shapes.triangle) print (shapes.quadrangle) |
0
1
2
3
18、從方法中返回多個(gè)值
1 2 3 4 | def ?x(): ???? return ?1 ,? 2 ,? 3 ,? 4 a,?b,?c,?d? = ?x() print (a,?b,?c,?d) |
1 2 3 4
19、使用*運(yùn)算符unpack函數(shù)參數(shù)
1 2 3 4 5 6 7 | def ?test(x,?y,?z): ???? print (x,?y,?z) testDic? = ?{ 'x' : 1 ,? 'y' : 2 ,? 'z' : 3 } testList? = ?[ 10 ,? 20 ,? 30 ] test( * testDic) test( * * testDic) test( * testList) |
z x y
1 2 3
10 20 30
20、用字典來存儲(chǔ)表達(dá)式
1 2 3 4 5 6 | stdcalc? = ?{ ???? "sum" :? lambda ?x,?y:?x? + ?y, ???? "subtract" :? lambda ?x,?y:?x? - ?y } print (stdcalc[ "sum" ]( 9 ,? 3 )) print (stdcalc[ "subtract" ]( 9 ,? 3 )) |
12
6
21、計(jì)算任何數(shù)的階乘
1 2 3 | import ?functools result? = ?( lambda ?k:?functools. reduce ( int .__mul__,? range ( 1 ,?k + 1 ),? 1 ))( 3 ) print (result) |
6
22、找到列表中出現(xiàn)次數(shù)最多的數(shù)
1 2 | test? = ?[ 1 ,? 2 ,? 3 ,? 4 ,? 2 ,? 2 ,? 3 ,? 1 ,? 4 ,? 4 ,? 4 ,? 4 ] print ( max ( set (test),?key = test.count)) |
4
23、重置遞歸限制
python限制遞歸次數(shù)到1000,可以用下面方法重置
1 2 3 4 5 | import ?sys x? = ?1200 print (sys.getrecursionlimit()) sys.setrecursionlimit(x) print (sys.getrecursionlimit()) |
1000
1200
24、檢查一個(gè)對(duì)象的內(nèi)存使用
1 2 3 | import ?sys x? = ?1 print (sys.getsizeof(x))???? #?python3.5中一個(gè)32比特的整數(shù)占用28字節(jié) |
28
25、使用slots減少內(nèi)存開支
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | import ?sys #?原始類 class ?FileSystem( object ): ???? def ?__init__( self ,?files,?folders,?devices): ???????? self .files? = ?files ???????? self .folder? = ?folders ???????? self .devices? = ?devices print (sys.getsizeof(FileSystem)) #?減少內(nèi)存后 class ?FileSystem( object ): ???? __slots__? = ?[ 'files' ,? 'folders' ,? 'devices' ] ???? def ?__init__( self ,?files,?folders,?devices): ???????? self .files? = ?files ???????? self .folder? = ?folders ???????? self .devices? = ?devices print (sys.getsizeof(FileSystem)) |
1016
888
26、用lambda 來模仿輸出方法
1 2 3 | import ?sys lprint? = ?lambda ?* args:?sys.stdout.write( "?" .join( map ( str ,?args))) lprint( "python" ,? "tips" ,? 1000 ,? 1001 ) |
python tips 1000 1001
27、從兩個(gè)相關(guān)序列構(gòu)建一個(gè)字典
1 2 3 | t1? = ?( 1 ,? 2 ,? 3 ) t2? = ?( 10 ,? 20 ,? 30 ) print ( dict ( zip (t1,?t2))) |
{1: 10, 2: 20, 3: 30}
28、搜索字符串的多個(gè)前后綴
1 2 | print ( "http://localhost:8888/notebooks/Untitled6.ipynb" .startswith(( "http://" ,? "https://" ))) print ( "http://localhost:8888/notebooks/Untitled6.ipynb" .endswith(( ".ipynb" ,? ".py" ))) |
True
True
29、不使用循環(huán)構(gòu)造一個(gè)列表
1 2 3 4 | import ?itertools import ?numpy?as?np test? = ?[[ - 1 ,? - 2 ],?[ 30 ,? 40 ],?[ 25 ,? 35 ]] print ( list (itertools.chain.from_iterable(test))) |
[-1, -2, 30, 40, 25, 35]
30、實(shí)現(xiàn)switch-case語句
1 2 3 4 5 | def ?xswitch(x): ???? return ??xswitch._system_dict.get(x,? None ) xswitch._system_dict? = ?{ "files" : 10 ,? "folders" : 5 ,? "devices" : 2 } print (xswitch( "default" )) print (xswitch( "devices" )) |
None