Python高階特性

2021-07-26 03:07:44 字數 2800 閱讀 4801

# ## python 高階特性

from collections import iterable

from collections import iterator

# #切片

# list切片

l = list(range(100))

print(l[0:3]) # 取前3個元素

print(l[:3]) # 取前3個元素

print(l[4:9]) # 取第4到第9位元素

print(l[-8:-4]) # 取倒數第8到倒數第4位元素

print(l[-8:]) # 取後8位元素

print(l[1:10:2]) # 取1到10之間的數字 步長為2

# tuple切片

a = (1, 2, 3, 4, 5, 6, 7, 9, 0, 8)

print(a[:6])

# 字串切片

string = 'this is a new sentence !'

print(string[5:8])

# # 迭代

# dict迭代

d =

for i in d:

print(i) # 預設情況下 dict迭代的是key

for v in d.values():

print(v) # for value in dict.value() 迭代dict的值

a_list = ['a', 'b', 'v', 'f']

for i, v in enumerate(a_list): # 使用enumerate()將list 轉為[索引-元素]對

print(i, v)

two_d = [(1, 2), (2, 5), (5, 7), (7, 0)] # 二維陣列

for x, y in two_d:

print(x, y)

# #列表生成式 (用於生成list的生成式)

print(

[x * x for x in range(1, 11)]

)print(

[x * x for x in range(1, 11) if x % 2 == 0] # 可加if判斷

)print(

[m + n for m in 'abc' for n in 'cde'] # 兩層迴圈

)d =

print(

[k + '=' + v for k, v in d.items()]

)print(

[x.lower() for x in l1 if isinstance(x, str)]

)# #生成器 generator

# 為節省記憶體 並不建立完整的list 而是一邊用一邊建立

# 只需要將生成式中的改為()

g = (x * x for x in range(1, 11))

print(

g)# 輸出 at 0x000000000104d1a8>

# 可通過呼叫next()獲得generator的下乙個值

print(

)print(

)print(

)# 亦可以使用for迴圈調出generator內部的值

for i in g:

print(i)

# 定義乙個generator

# 使用yield將函式轉為generator,即將資料存放在容器中,呼叫時取出

def fib(max_n):

n, a, b = 0, 0, 1

while n < max_n:

yield (b)

a, b = b, a + b

n = n + 1

return 'done'

# 使用for迴圈調出generator內部的值

for n in fib(6):

print(n)

# # 迭代器

# 可用for迴圈的資料型別有兩種:

# 1、集合資料型別,如tuple、list、dict

# 2、generator,以及帶yield的generator function

# 能直接作用於for迴圈的物件統稱為 可迭代物件 iterable

# 呼叫isinstance()判斷物件是否為iterable物件

print(

isinstance(, iterable) # 返回true

)print(

isinstance((x for x in range(1, 11)), iterable) # 返回true

)# 能被next()呼叫並不斷返回下乙個值得物件成為迭代器 iterator,即惰性計算序列

# 呼叫isinstance()判斷物件是否為iterator物件

print(

isinstance(, iterator) # list返回false

)print(

isinstance(('a', 'b', 'c', 'd'), iterator) # tuple返回false

)# 生成器都是iterator物件,但list、dict、str雖然是iterable,卻不是iterator

# 將list、dict、str雖然是iterable轉化為iterator,可使用iter()函式

print(

isinstance(iter(), iterator) # 返回true

)print(

isinstance(iter(('a', 'b', 'c', 'd')), iterator) # 返回true

)

Python高階特性

l csx sarah tracy bob jack print l 0 l 1 l 2 輸出 csx sarah tracy l 0 3 輸出 csx sarah tracy 如果第乙個索引是0,還可以省略 print l 2 輸出 bob jack print l 2 1 輸出 bob d fo...

Python高階特性

切片 slice 非常靈活,體現了python的簡便性 1.取乙個list和tuple的部分元素時的簡化操作 l michael sarah tracy bob jack l 0 3 michael sarah tracy 從0開始不包括3,第乙個索引是0可省略,也支援負數按倒數的順序取值,什麼都不...

Python高階特性

高階特性的作用在於用最少的 解決問題,越少效率越高 切片的作用於包括集合,元組,字串 0 10 獲取集合或者字串中第 0 個到第 9 個元素組成新資料,切片規則時包左不包右 0 10 2 獲取第 0 個到第 9 個的元素中第 0 2,3,5,7,9 的元素組成新資料 2 從第乙個元素開始跳過乙個元素...