列表(list)是python標(biāo)準(zhǔn)數(shù)據(jù)類型之一,使用列表操作數(shù)據(jù)就顯得極其重要了。
我們先看一個(gè)例子
列表解析
a = [x for x in range(10)],
我們可以理解為,當(dāng)x在range(10)里時(shí),a.append(x)。
用代碼描述:
源碼,供大家實(shí)驗(yàn)
a = [] # 定義一個(gè)空列表
def num():
for i in range(10): # for循環(huán)取出range(10)中的值
a.append(i) # 將剛?cè)〕龅闹导尤氲絘中
print(a) # 打印a的值
num() # 調(diào)用函數(shù)
當(dāng)然,我們還可以用列表去做一些更加復(fù)雜的的事,比如,
本來需要很多行代碼的事,一行就搞定了。
不過,這樣做也可能有拖慢程序的整體速度,因?yàn)閍 = [x for x in range(10)]語句是一次生成所有的列表元素,將其放入內(nèi)存中待用,這就導(dǎo)致了資源的浪費(fèi)。比如我們使用a =[ x for x in range(100000000)],那么就會生成一億個(gè)數(shù),多數(shù)計(jì)算機(jī)是有壓力的(大家可以自己試一試)。
這時(shí)我們就需要用到生成器了,直接返回一個(gè)可迭代對象。例如:
生成器
大家可以看見,a不在是是list類型了,而是一個(gè)可迭代對象,瞬間完成。
next迭代
每迭代一次,就生成一個(gè)數(shù)。除了next,大家也可以用for迭代取出對象a的值。