不要這麼作:html
i = 0 for item in iterable: print i, item i += 1
而是這樣:python
for i, item in enumerate(iterable): print i, item
Enumerate能夠接受第二個參數,例如:express
>>> list(enumerate('abc')) [(0, 'a'), (1, 'b'), (2, 'c')] >>> list(enumerate('abc', 1)) [(1, 'a'), (2, 'b'), (3, 'c')]
你可能知道列表解析,但不知道字典/集合解析。字典/集合解析簡單並且高效,例如:json
my_dict = {i: i * i for i in xrange(100)} my_set = {i * 15 for i in xrange(100)} # There is only a difference of ':' in both
若是咱們除以一個整數,即便結果是一個浮點數,Python(2) 依舊會給咱們一個整數。爲了規避這個問題,咱們須要這樣作:服務器
result = 1.0/2
可是如今有一種別的方法能夠解決這個問題,甚至在以前我都沒有意識到有這種方法存在。你能夠進行以下操做:wordpress
from __future__ import division result = 1/2 # print(result) # 0.5
須要注意的是這個竅門只適用於Python 2。在Python 3 中就不須要進行import 操做了,由於它已經默認進行import了。函數
你想快速簡單的分享目錄下的文件嗎?能夠這樣作:調試
# Python2 python -m SimpleHTTPServer # Python 3 python3 -m http.server
這回啓動一個服務器code
咱們都知道eval
,但也許並非全部人都知道literal_eval
.能夠這麼作:server
import ast my_list = ast.literal_eval(expr)
而不是這樣:
expr = "[1, 2, 3]" my_list = eval(expr)
我相信對於大多數人來講這種形式是第一次看見,可是實際上這個在Python中已經存在很長時間了。
按下面的方式運行腳本,能夠很簡單的對其進行分析:
python -m cProfile my_script.py
在Python中,能夠經過dir()來檢查對象,例如:
>>> foo = [1, 2, 3, 4] >>> dir(foo) ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', ... , 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
你可使用pdb
模塊在腳本中設置斷點來調試腳本,就像這樣:
import pdb pdb.set_trace()
你能夠在腳本的任何地方加入pdb.set_trace()
,該函數會在那個位置設置一個斷點。超級方便。你應該多閱讀pdb 函數的相關內容,由於在它裏面還有不少不爲人知的功能。
若是必須檢查一些值,能夠用
if n in [1,4,5,6]:
而不是用複雜的if結構:
if n==1 or n==4 or n==5 or n==6:
下面的方式能夠快速反轉一個列表:
>>> a = [1,2,3,4] >>> a[::-1] [4, 3, 2, 1] # This creates a new reversed list. # If you want to reverse a list in place you can do: a.reverse()
這種方式一樣適用於字符串:
>>> foo = "yasoob" >>> foo[::-1] 'boosay'
下面的方式能夠用優雅的方式打印字典和列表:
from pprint import pprint pprint(my_dict)
這用於字典打印是很是高效的,若是你想從文件中快速優雅的打印出json,能夠這樣作:
cat file.json | python -m json.tools
三元運算是if-else 語句的快捷操做,也被稱爲條件運算。這裏有幾個例子能夠供你參考:
[on_true] if [expression] else [on_false] x, y = 50, 25 small = x if x < y else y
本文根據@Nicolas Bevacqua的《nifty-python-tricks》所譯,整個譯文帶有我本身的理解與思想,若是譯得很差或有不對之處還請同行朋友指點。如需轉載此譯文,需註明英文出處:https://freepythontips.wordpress.com/2015/04/19/nifty-python-tricks/。