1. 程式人生 > >Python學習筆記(三) Python高階特性

Python學習筆記(三) Python高階特性

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]