Python優雅技巧

2021-07-03 06:35:01 字數 2777 閱讀 4765

不要這麼做:

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...