python筆記7:優雅的python

7. 如何讓python代碼更 Pythonic :

一、變量交換: python

a, b = b, a

二、帶有索引位置的集合遍歷:數據結構

colors = ['red', 'green', 'blue', 'yellow']
for i, color in enumerate(colors):
print i, '--->', color

三、字符串鏈接:app

names = ['raymond', 'rachel', 'matthew', 'roger','betty', 'melissa', 'judith', 'charlie']
print ', '.join(names)

注:使用 + 操做時,每次都會在內存中生成一個新的字符串對象,而 join 方法整個過程只產生一個字符串對象。
四、打開/關閉文件: spa

with open('data.txt') as f:
data = f.read()


注:使用 with 語句,系統會在執行完文件操做後自動關閉文件對象。
五、合理使用列表code

from collections import deque
names = deque(['raymond', 'rachel', 'matthew', 'roger','betty', 'melissa', 'judith', 'charlie'])
names.popleft()#刪除最左邊元素
names.appendleft('mark')#在最左邊添加新元素

注:列表list 是一種查詢效率高於更新操做的數據結構,刪除和插入新元素時效率很低,隊列deque 是一個雙向隊列的數據結構,刪除元素和插入元素會很快
六、序列解包: 對象

p = 'vttalk', 'female', 30, 'python@qq.com'
name, gender, age, email = p

七、遍歷字典的 key 和 valueblog

for k, v in d.iteritems(): 注:iteritems 返回迭代器對象,在python3中只有 items 方法,等值於iteritems
print k, '--->', v

八、鏈式比較操做: if 18 < age < 60:索引

猜一猜:>>> False == False == True (答案爲:False)

九、if/else 三目運算:隊列

text = '' if gender == 'male' else ''

十、真值判斷:內存

if attr: 等價於 if attr == True:
if values:(或 not values) 等價於 if len(values) != 0:(或 =0) # 判斷列表是否爲空

十一、for/else語句
for else 是 Python 中特有的語法格式,else 中的代碼在 for 循環遍歷完全部元素以後執行
十二、獲取字典元素

d = {'name': 'foo'}
d.get("name", "unknow") #若是d有key=name,則得到其value,不然key=unknow

1三、預設字典默認值
(場景:經過 key 分組的時候,不得不每次檢查 key 是否已經存在於字典中。)

groups = {}
for (key, value) in data: #方式一,經常使用
groups.setdefault(key, []).append(value) 

1四、字典推導式

numbers = [1, 2, 3]
my_dict = {number: number * 2 for number in numbers if number > 1}
print(my_dict) # {2: 4, 3: 6}

1五、。。。

相關文章
相關標籤/搜索