計算創建元組和列表所需要的時間:ipython 中使用 timeit
在內存占用和運算時間方面,元組比列表都更有優勢。
當內容不發生改變的情況下,優先選用元組;當內容需要改變的情況下,優先選用列表。
collections模塊中的namedtuple函數
namedtuple: 接收兩個參數,第一個創建的類型名稱,第二個列表
from collections import namedtuple
Fruits = namedtuple('Fruits', ['name', 'color', 'size'])
f = Fruits('watermelon', 'green', '3')
print(f.name)
# 輸出結果為: watermelon
字典推導式
字典查找值的過程
性能分析:
從時間上比較:集合, 字典,元組,列表
從內存上比較:字典, 集合, 列表,元組
3.1 列表推導式
將遍歷到的值取到前面
lis_nu = [i for i in range(1,101)]
print(lis_nu)
3.2 字典推導式
dit_nu = {i: i+1 for i in range(10)}
print(dit_nu)
> {0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}
3.3 生成器
3.3.1 ()
優勢:節約內存,提高性能
ge = (i for i in range(100))
a = next(ge)
print(a)
> 0
3.3.2 yield
yield 通過next() 取值
3.4 迭代器
迭代器可以通過next()取值
可迭代對象:可以for循環遍歷的都是可迭代對象
將可迭代對象轉換為迭代器:iter(可迭代對象)
生成器是迭代器的一種
3.4.2 send() 函數
def s_d():
for i in range(6):
j = yield i
print(j)
# send: 與生成器進行交互
dd = s_d()
print(next(dd))
print(dd.send(10))
》輸出結果為:
0
10
1
send(num)函數,相當於next()函數,並且send(num)函數傳進去的num值等於 yield i
Just after the Spring F
List of articles 1. Non operat