取列表或者元祖中的元素,可以通過索引,但索引只能取乙個元素。如果取多個元素,通過迴圈的話,比較繁瑣。而如果用切片,一行**就解決了。切片是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為止...