python高級篇

1.切片功能:相似於java中的split方法。對list或者triple中幾個值進行取出的過程。java

L = ['a','b','c','d']   L[0:3] = ['a','b','c']   #下標從0開始,取到第n-1個元素  L[-2:] =['c','d'] #倒序取值python

2.迭代(循環)功能:python中的可遍歷對象只要是可迭代對象,例如list,triple,dict,字符串函數

dict默認迭代的是key值,也能夠循環value值。for value  in d.values()  同時迭代  for k,v in d.items()對象

判斷是否爲可迭代對象:ip

from collections import Iterable內存

isinstance('abc',Iterable)  #字符串是否可迭代    True字符串

isinstance([1,2,3],Iterable)  #list是否可迭代    Truegenerator

isinstance(123,Iterable)  #整數是否可迭代    Trueit

 

帶下標輸出: io

for i, value in enumerate(['A','B','C'])   

print(i,value)

0 A  1 B  2 C

 

3.列表生成式

生成簡單的list能夠用 list(range(1,11))  通用表達式爲: [x for x in range(1,11)]

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

#兩層循環:[m+n for m in 'abc' for n in 'xyz']

練習:判斷list中元素是否爲字符串,  

L1 = ['Hello','World',18,'Apple',None]

L2 = [x.lower() for x in L1 if isinstance(x,str)]

print(L2)

4.生成器

經過列表生成式建立時,因爲內存大小的限制,列表的容量是有限的。所以採用一邊循環,一邊計算的機制,也就是生成器(generator)

#建立一個生成器,將列表生成式中的[]改爲()便可

L = [x * x for x in range(10)]

g = (x * x for x in range(10))

能夠經過next()函數得到下一個返回值(不實用,通常經過for循環獲取)

#斐波拉契數列函數

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'

#斐波拉契數列生成器

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'

函數和生成器的執行流程不一樣,函數是順序執行,遇到return語句或最後一行語句就返回。而生成器則是在每次調用next()時執行,遇到yield語句返回。再次執行時從上次返回的yield語句繼續執行

5.迭代器

可用於for循環的對象稱爲可迭代對象  (有窮元素)

能夠被next()函數調用並不斷返回下一個值的對象稱爲迭代器 (Iterator)  (無窮元素)

可迭代對象不是迭代器,可是能夠經過iter()函數來進行轉換

(可迭代對象就比如咱們去飯店點餐,咱們點的老是有限的。而迭代器就如同吃自助餐,咱們手裏只有一個盤子,每次也只能取一個食物。但食物的供應量相對來說是無限的。一樣的食物,從飯店拿到自助店就創造出了迭代器)

相關文章
相關標籤/搜索