Python快速學習-進階特性

來源:互聯網
上載者:User

標籤:tuple   value   特性   通過   key   快速學習   第一個   values   解決問題   

1.切片

取一個list或tuple的部分元素是非常常見的操作

L = [‘hello‘,‘the‘,‘world‘,‘and‘,‘my‘,‘love‘]

取前三個元素 L[0:3],L[:3]

取倒數第一個元素:L[-1](倒數第一個元素的索引-1)

取後兩個元素:L[-2:]

建立0-99的數列:L=list(range(100))

取前十個元素:L[:10]

取後十個元素:L[-10:]

前11-20個元素:L[10:20]

前10個數,每兩個取一個:L[:10:2]

所有數,每5個取一個:L[::5]

複製一個list:L[:]

tuple也是一種list,唯一區別是tuple不可變,切片同樣適用於tuple,結果仍然是tuple(0,1,2,3,4,5)[:3] =>(0,1,2)

字串也可以看成一種list,也可以用於切片 ‘ABCDEF‘[:3]=>‘ABC‘

python中沒有針對字串的截取函數,只需要切片操作就可以。

2.迭代

dict迭代:

>>>d = {‘a‘:1,‘b‘:2,‘c‘:3}>>>for key in d:...    print(key)

迭代value

>>>for value in d.values()

同時迭代key和value

>>>for k, v in d.items()

字串迭代:

>>>for ch in ‘ABC‘:...   print(ch)

判斷一個對象是否是可迭代對象

from collections import Iterable>>>isinstance(‘abc‘,Iterable) #str是否可迭代True>>>isinstance([1,2,3],Iterable) #list是否可迭代True>>>isinstance(123,Iterable) #整數是否可迭代False

list的下標迴圈迭代,通過enumerate內建函數可以把一個list變成索引-元素對

>>>for i,value in enumerate([‘a‘,‘b‘,‘c‘]):...    print(i,value)

3.列表產生式(產生list)

>>>[x * x for x in range(1,11)][1, 4, 9, 16, 25, 36, 49, 64, 81, 100]>>>[x * x for x in range(1,11) if x % 2 ==0][4, 16, 36, 64, 100]>>> [m + n for m in ‘ABC‘ for n in ‘XYZ‘][‘AX‘, ‘AY‘, ‘AZ‘, ‘BX‘, ‘BY‘, ‘BZ‘, ‘CX‘, ‘CY‘, ‘CZ‘]

4.產生器

要建立一個generator,有很多種方法。第一種方法很簡單,只要把一個列表產生式的[]改成(),就建立了一個generator

>>> L = [x * x for x in range(10)]>>> L[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]>>> g = (x * x for x in range(10))

要把fib函數變成generator,只需要把print(b)改為yield b就可以了

def fib(max):    n, a, b = 0, 0, 1    while n < max:        yield b        a, b = b, a + b        n = n + 1    return ‘done‘

這就是定義generator的另一種方法。如果一個函數定義中包含yield關鍵字,那麼這個函數就不再是一個普通函數,而是一個generator。

5迭代器

凡是可作用於for迴圈的對象都是Iterable類型;

凡是可作用於next()函數的對象都是Iterator類型,它們表示一個惰性計算的序列;

集合資料類型如list、dict、str等是Iterable但不是Iterator,不過可以通過iter()函數獲得一個Iterator對象;

Python的for迴圈本質上就是通過不斷調用next()函數實現的;

 

能寫一行代碼解決問題,絕不寫5行。請始終牢記,代碼越少,開發效率越高

Python快速學習-進階特性

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.