# ## 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 從第乙個元素開始跳過乙個元素...