python高级功能_python高级篇
1.切片功能:類似于java中的split方法。對list或者triple中幾個(gè)值進(jìn)行取出的過程。
L = ['a','b','c','d']? ?L[0:3] = ['a','b','c']? ?#下標(biāo)從0開始,取到第n-1個(gè)元素? L[-2:] =['c','d'] #倒序取值
2.迭代(循環(huán))功能:python中的可遍歷對象只要是可迭代對象,例如list,triple,dict,字符串
dict默認(rèn)迭代的是key值,也可以循環(huán)value值。for value? in d.values()? 同時(shí)迭代? for k,v in d.items()
判斷是否為可迭代對象:
from collections import Iterable
isinstance('abc',Iterable)? #字符串是否可迭代? ? True
isinstance([1,2,3],Iterable)? #list是否可迭代? ? True
isinstance(123,Iterable)? #整數(shù)是否可迭代? ? True
帶下標(biāo)輸出:
for i, value in enumerate(['A','B','C'])
print(i,value)
0 A? 1 B? 2 C
3.列表生成式
生成簡單的list可以用 list(range(1,11))? 通用表達(dá)式為: [x for x in range(1,11)]
# 添加if判斷: [x * x for x in range(1,11) if x % 2 ==0]
#兩層循環(huán):[m+n for m in 'abc' for n in 'xyz']
練習(xí):判斷l(xiāng)ist中元素是否為字符串,
L1 = ['Hello','World',18,'Apple',None]
L2 = [x.lower() for x in L1 if isinstance(x,str)]
print(L2)
4.生成器
通過列表生成式創(chuàng)建時(shí),由于內(nèi)存大小的限制,列表的容量是有限的。因此采用一邊循環(huán),一邊計(jì)算的機(jī)制,也就是生成器(generator)
#創(chuàng)建一個(gè)生成器,將列表生成式中的[]改成()即可
L = [x * x for x in range(10)]
g = (x * x for x in range(10))
可以通過next()函數(shù)獲得下一個(gè)返回值(不實(shí)用,一般通過for循環(huán)獲取)
#斐波拉契數(shù)列函數(shù)
def fib(max):
n,a,b = 0,0,1
while n < max:
print(b)
a,b = b,a+b? ? # t = (b,a+b)? t為tuple? a = t[0]? b = t[1]
n = n+1
return 'done'
#斐波拉契數(shù)列生成器
def fib(max):
n,a,b = 0,0,1
while n < max:
yield? b
a,b = b,a+b? ? # t = (b,a+b)? t為tuple? a = t[0]? b = t[1]
n = n+1
return 'done'
函數(shù)和生成器的執(zhí)行流程不同,函數(shù)是順序執(zhí)行,遇到return語句或最后一行語句就返回。而生成器則是在每次調(diào)用next()時(shí)執(zhí)行,遇到y(tǒng)ield語句返回。再次執(zhí)行時(shí)從上次返回的yield語句繼續(xù)執(zhí)行
5.迭代器
可用于for循環(huán)的對象稱為可迭代對象? (有窮元素)
可以被next()函數(shù)調(diào)用并不斷返回下一個(gè)值的對象稱為迭代器 (Iterator)? (無窮元素)
可迭代對象不是迭代器,但是可以通過iter()函數(shù)來進(jìn)行轉(zhuǎn)換
(可迭代對象就好比我們?nèi)ワ埖挈c(diǎn)餐,我們點(diǎn)的總是有限的。而迭代器就如同吃自助餐,我們手里只有一個(gè)盤子,每次也只能取一個(gè)食物。但食物的供應(yīng)量相對來講是無限的。同樣的食物,從飯店拿到自助店就創(chuàng)造出了迭代器)
總結(jié)
以上是生活随笔為你收集整理的python高级功能_python高级篇的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中函数type可以测试对象类
- 下一篇: 微软学术搜索项目 10个版本的历程