python學習筆記(三),python學習筆記

來源:互聯網
上載者:User

python學習筆記(三),python學習筆記

一. 切片

切片操作和java中的subList類似,就是擷取一個子列表

比如L=['zhangsan','lisi','wangwu'] 那麼L[0, 2]表示從索引0開始取,直到索引2(不含2), 正好2個元素。如果第一個索引為0, 還可以省略.

下面我們建立一個0-99的數列: L = range(100)

1. 擷取前10個數: L[:10]

2. 擷取後10個數: L[-10:]    # 倒數第一個元素的索引是-1

3. 擷取前11-20個數: L[10:20]

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

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

tuple, 字串‘xxx’ 或 Unicode字串u'xxx'也可以使用切片操作


二. 迭代

python的for迴圈不僅可以用在list或tuple上,還可以作用在其他可迭代對象上

1. 迭代dict:

d = {'a': 1, 'b': 2, 'c': 3}for key in d:    print key
dict的儲存不是按照list的方式順序排列,所以,迭代出的結果順序很可能不一樣。

預設情況下,dict迭代的是key。如果要迭代value,可以用for value in d.itervalues(), 如果要同時迭代key和value,可以用for k, v in d.itervalues()

2. 判斷對象是否可迭代:(通過collections模組的iterable類型判斷)

from collections import Iterableprint isinstance('abc', Iterable) # str是否可迭代 (True)print isinstance([1,2,3], Iterable) # list是否可迭代 (True)  print isinstance(123, Iterable) # 整數是否可迭代 (False)
3. 迭代索引和元素本身:(通過enumerate函數把list變成索引-元素對)
>>> for i, value in enumerate(['A', 'B', 'C']):...     print i, value...0 A1 B2 C

三. 列表產生式

1. 產生列表

>>> [x * x for x in range(1, 11)][1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
2. 帶條件的列表產生式:(篩選出僅偶數的平方)
>>> [x * x for x in range(1, 11) if x % 2 == 0][4, 16, 36, 64, 100]
3. 雙層迴圈產生全排列:
>>> [m + n for m in 'ABC' for n in 'XYZ']['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
4. 多個變數的列表產生式
>>> d = {'x': 'A', 'y': 'B', 'z': 'C' }>>> for k, v in d.iteritems():...     print k, '=', v... y = Bx = Az = C


四. 產生器

list不是一次性產生,而是在迴圈的過程中不斷推算出後續的元素,這種一邊迴圈一邊計算的機制稱為產生器。

L = [x * x for x in range(10)] # list  - 中括弧g = (x * x for x in range(10)) # generator  - 小括弧

定義generator的另一種方法:

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

generator函數在每次調用next()的時候執行,遇到yield語句返回,再次執行時從上次返回的yield語句處繼續執行。

如:定義一個generator,依次返回數字1, 3, 5

def odd():    print 'step 1'    yield 1    print 'step 2'    yield 3    print 'step 3'    yield 5o = odd()print o.next()  # step1 1print o.next()  # step2 2 print o.next()  # step3 3

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.