1. 程式人生 > >Python學習之旅(十二)

Python學習之旅(十二)

Python基礎知識(11):高階特性

一、分片(切片)

 

通過索引來獲取一定範圍內的元素

#字串
s="Alice"
s[0:4:2]
結果:
'Ai'

#列表
l=[1,2,3,4,5,6]
l[0:2]
結果:
[1, 2]

#元組
t=(1,2,3,"a","b","c")
t[:]
結果:
(1, 2, 3, 'a', 'b', 'c')

二、迭代

給定一個元組或列表,通過for迴圈遍歷,這種遍歷稱為迭代

def test():
    l=["A","l","i","c","e"]
    for i in l:
        print
(i) test()

結果:

A
l
i
c
e

 

通過collections模組的Iterator判斷一個物件是否是可迭代物件

from collections import Iterable
isinstance("more", Iterable)
結果:True

enumerate函式可以把一個list變成索引-元素對,可以在for迴圈中同時迭代索引和元素本身:

for i in enumerate(["more","money","never","God"]):
    print(i)

結果:    
(0, 'more')
(1, 'money
') (2, 'never') (3, 'God')

三、列表生成式

可以用list(range(1, 11))生成列表 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

列表生成式用一行語句代替迴圈生成列表

l=[]
for i in range(1,10):
    l.append(i*i)

    
結果:
[1, 4, 9, 16, 25, 36, 49, 64, 81]

[x*x for x in range(1,10)]
結果:
[1, 4, 9, 16, 25, 36, 49, 64, 81]

四、生成器

生成器generator:列表中的元素可以在迴圈中按照某種演算法推算出來機制

 建立一個generator的方法:

1、把一個列表生成式的[]改成(),就建立了一個generator:

L = [x * x for x in range(9)]
L

結果:

[0, 1, 4, 9, 16, 25, 36, 49, 64]

五、迭代器

凡是可作用於for迴圈的物件都是Iterable型別

凡是可作用於next()函式的物件都是Iterator型別,它們表示一個惰性計算的序列

集合資料型別如listdictstr等是Iterable但不是Iterator,不過可以通過iter()函式獲得一個Iterator物件

 

資料來源:

廖雪峰官方網:https://www.liaoxuefeng.com