枚舉不要這麼做:全選複製放進筆記i = 0 for item in iterable: print i, item i += 1而是這樣:全選複製放進筆記for i, item in enumerate(iterable): print i, itemEnumerate可以接受...
枚舉
不要這麼做:
i = 0
for item in iterable:
print i, item
i += 1
而是這樣:
for i, item in enumerate(iterable):
print i, item
Enumerate可以接受第二個參數,例如:
>>> list(enumerate('abc'))
[(0, 'a'), (1, 'b'), (2, 'c')]
>>> list(enumerate('abc', 1))
[(1, 'a'), (2, 'b'), (3, 'c')]
字典/集合 解析
你可能知道列表解析,但不知道字典/集合解析。字典/集合解析簡單而且高效,例如:
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
但是現在有一種別的方法可以解決這個問題,甚至在之前我都沒有意識到有這種方法存在。你可以進行如下操作:
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
這回啟動一個伺服器
Python表達式求值
我們都知道eval
,但也許並不是所有人都知道literal_eval
.可以這麼做:
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結構
如果必須檢查一些值,可以用
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
譯文出處:http://www.ido321.com/1576.html
本文根據@Nicolas Bevacqua的《nifty-python-tricks》所譯,整個譯文帶有我自己的理解與思想,如果譯得不好或有不對之處還請同行朋友指點。如需轉載此譯文,需註明英文出處:https://freepythontips.wordpress.com/2015/04/19/nifty-python-tricks/。