python入門 切片,迭代,列表生成

2021-07-08 13:57:57 字數 1670 閱讀 3396

取列表或者元祖中的元素,可以通過索引,但索引只能取乙個元素。如果取多個元素,通過迴圈的話,比較繁瑣。而如果用切片,一行**就解決了。切片是python中比較靈活的選取列表或者元祖中選取元素的方法,當然也可以選擇字串中的元素。

基本的形式是l[start : end],表示從start一值到end的索引元素,間隔是1,包括start索引,不包括end索引。

如果間隔不是1,則可以通過l[start: : end: step]。如果start空缺,表示從0開始;如果end缺失表示一直索引到最後元素。

可以倒敘索引如l[-1],當然也可以倒敘切片。l[-2:]表示l的最後兩個元素;l[:-2]表示除去l的最後兩個元素剩下的所有元素。倒敘切片也是包括起始索引,不包括結束索引。l=[1,2,3,4]。l[-3:-1] = [2,3]。l[-4:-1:2] = [1,3]。

這裡的迭代是指:迴圈遍歷list, tuple, dict, set, str中的元素。

索引迭代:

迭代只是取出元素,有時我們想加上索引。可以用enumerate()函式:

l = ['adam', 'lisa', 'bart', 'paul']

for index, name in enumerate(l):

print index, '-', name

0 - adam

1 - lisa

2 - bart

3 - paul

zip()函式:把兩個列表變成乙個。

>>> zip([10, 20, 30], ['a', 'b', 'c'])

[(10, 'a'), (20, 'b'), (30, 'c')]

dict的value(),和items()方法:

d = 

print d.values()

# [85, 95, 59]

for v in d.values():

print v

# 85

# 95

# 59

>>> for key, value in d.items():

... print key, ':', value

...

lisa : 85

adam : 95

bart : 59

不用for迴圈,通過簡單的列表生成表示式就可以生成複雜的表示式。

比如:

>>> [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]

只有if後面判斷為true時才把for迴圈中的元素加進列表。

也可以多層表示式:

>>> [m + n for m in 'abc' for n in '123']

['a1', 'a2', 'a3', 'b1', 'b2', 'b3', 'c1', 'c2', 'c3']

python學習 切片 迭代 列表生成式

1 切片 s list range 15 print s 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14 print s 0 s 1 s 2 0 1 2 print s 0 3 0,1,2 s 0 到s 3 包括s 0 不包括s 3 print s 3 0,1,2 起始值為0時...

python 切片 Python 列表切片

想必很多人都使用過列表的切片,通過切片可以從列表中獲取乙個或多個元素,但你真的了解切片?一 一般玩法 name a b c d e f g h name 0 2 獲取 0 2 中間的元素,不包括索引為 2 的元素 a b name 2 從 0 開始切,可省略 0 a b name 1 同樣地,切到最...

python 切片,迭代

切片 slice 操作符 其格式為 列表 元組 名 舉個例子 我們想提取前三科成績 score 數學 90 語文 89 英語 87 物理 77 化學 90 print score 0 3 結果 數學 90 語文 89 英語 87 像上面的例子score 0 3 表示的是從索引0開始取,直到索引3為止...