Python學習筆記(三) Python高階特性
阿新 • • 發佈:2018-11-08
1.切片
對於list和tuple,經常要取其中一部分元素,如果用迴圈取,太麻煩,可以用切片簡化操作
myList = [1, 2, 3, 4, 5]
#表示,從索引0開始取,直到索引3為止,但不包括索引3, 輸出 myList[0:3] = [1, 2, 3]
print("myList[0:3] = ", myList[0:3])
還有別的操作如下
myList = [1, 2, 3, 4, 5]
print("myList[0:3] = ", myList[0:3])
#如果第一個索引是0,還可以省略
print("myList[:3] = ", myList[:3])
#也可以從索引1開始,取出2個元素出來
print("myList[1:3] = ", myList[1:3])
#類似的,既然Python支援L[-1]取倒數第一個元素,那麼它同樣支援倒數切片
print("myList[-3:-1] = ", myList[-3:-1])
#字串也可以看出List,可以用切片操作,只是操作結果仍是字串
theStr = 'abcdef'
print("str[1:3] = ", theStr[1:3])
myList[0:3] = [1, 2, 3]
myList[:3] = [1, 2, 3]
myList[1:3] = [2, 3]
myList[-3:-1] = [3, 4]
str[1:3] = bc
2.迭代
如果給定一個list或tuple,我們可以通過for迴圈來遍歷這個list或tuple,這種遍歷我們稱為迭代(Iteration)
在Python中,迭代是通過for … in來完成的
#list的for迴圈
names = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
for thisName in names:
print(thisName)
#只要是可迭代物件,無論有無下標,都可以迭代,比如dict就可以迭代
users = {"winter": 30, "pig": 20, "mico" : 1}
#預設情況下,dict迭代的是key
for key in users:
print(key)
#迭代value
for value in users.values():
print(value)
#同時迭代key和value
for name, age in users.items():
print("name = {}, age = {}".format(name, age))
#由於字串也是可迭代物件,因此,也可以作用於for迴圈
for ch in "ABCD":
print(ch)
#Python內建的enumerate函式可以把一個list變成索引-元素對,這樣就可以在for迴圈中同時迭代索引和元素本身
for index, value in enumerate(names):
print(index, value)
#上面的for迴圈裡,同時引用了兩個變數,在Python裡是很常見的
for x, y in [(1, 1), (2, 4), (3, 9)]:
print(x, y)
執行結果如下:
Michael
Sarah
Tracy
Bob
Jack
pig
mico
winter
20
1
30
name = pig, age = 20
name = mico, age = 1
name = winter, age = 30
A
B
C
D
0 Michael
1 Sarah
2 Tracy
3 Bob
4 Jack
1 1
2 4
3 9
3.列表生成式
這個先了解下range()函式
range() 函式返回的是一個可迭代物件(型別是物件),而不是列表型別
語法如下
range(stop)
range(start, stop[, step])
- start: 計數從 start 開始。預設是從 0 開始。例如range(5)等價於range(0, 5);
- stop: 計數到 stop 結束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]沒有5;
- step:步長,預設為1。例如:range(0, 5) 等價於 range(0, 5, 1);
要生成[1x1, 2x2, 3x3, …, 10x10]
[x * x for x in range(1, 11)]
#[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
for迴圈後面還可以加上if判斷,這樣我們就可以篩選出僅偶數的平方
[x * x for x in range(1, 11) if x % 2 == 0]
#[4, 16, 36, 64, 100]