不要這麼做:
i = 0
foritem
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 =
my_set =
# 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了。
你想快速簡單的分享目錄下的檔案嗎?可以這樣做:
python3 -m http.server這回啟動乙個伺服器
我們都知道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()
如果必須檢查一些值,可以用
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
譯文出處: Python優雅程式設計技巧
標籤 空格分隔 python 需求 把list所有成員元素加倍。普通的方式 bag 1,2,3,4,5 for i in range len bag bag i bag i 2優雅的方式 bag 1,2,3,4,5 bag elem 2 for elem in bag 普通的方式 bag 1,2,3...
優雅的使用python
優雅的使用python,讓自己的code更pythonic test list 龍母 雪諾 提里昂 山姆 count 0 for name in test list print s的序號是 d name,count count 1龍母的序號是 0 雪諾的序號是 1 提里昂的序號是 2 山姆的序號是 ...
Go程式設計技巧 Goroutine的優雅控制
原文 go程式設計技巧 goroutine的優雅控制 goroutine是go語言最重要的機制,goroutine將複雜的需要非同步的io呼叫抽象成同步呼叫,符合人類正常的順序思維,極大的簡化了io程式設計的難度。如同執行緒一樣,對goroutine既要掌握基本的用法,更要很好的控制goroutin...