python進階特性

來源:互聯網
上載者:User

標籤:

1.python進階特性

1.1切片

list列表 L=[‘Mli‘,‘add‘,‘sal‘,‘saoo‘,‘Lkkl‘]

L[0:3]  #即為[‘Mli‘,‘add‘,‘sal‘]  從索引0開始,到索引3結束,但不包括3

L[:3]等價於 L[0:3]

L[-2:]  #即為 [‘saoo‘,‘Lkkl‘]   最後一個元素的索引為-1

L[-2:-1]  #即為[‘Lkkl‘]

L=range(100)  #則L[1:6:2]為 每個兩個元素取一個數  所以輸出為[2,4]

tuple也可以用切片操作,只是切片不可變,操作以後還是切片  例如L=(1,2,3,4)   則L[0:3]輸出結果為(1,2,3)

字串也可以用切片,例如 m=‘sajlkdjsalkjd‘  則m[0:3]  輸出‘saj‘

1.2迭代

如果定義一個list或tuple,可以用for迴圈遍曆,稱之為迭代

對於dict類型,也可以運用迭代,只不過輸出key值

例如:dict={‘lk‘:‘36‘,‘klk‘:‘37‘,‘kkd‘:‘98‘}

    for n in dict:

      print n

結果輸出

kkd
lk
klk

要想輸出value值只需

dict={‘lk‘:‘36‘,‘klk‘:‘37‘,‘kkd‘:‘98‘}

    for n in dict.itervalues():

      print n

同樣如果想要輸出 key-value的值(兩個都輸出),需要將代碼改為 for n in dict.iteritems()  #此時n為一個tuple類型

for key,v in dict.ie=ieritems()

1.3列表產生式

顧名思義 list產生式

[x*x for x in range(3)]  #輸出結果為[0,1,4]

[x*x for x in range(3)  fi x%2==0] #輸出結果為[0,4]

[m+n for m in ‘ABC‘ for n in ‘abc‘] #輸出結果為[‘Aa‘, ‘Ab‘, ‘Ac‘, ‘Ba‘, ‘Bb‘, ‘Bc‘, ‘Ca‘, ‘Cb‘, ‘Cc‘](全排列)

L=[‘ABC‘,‘DEF‘,‘GHI‘]  [s.lower() for s in L]  #將L中的大寫字母改為小寫

1.4產生器(generator)

清單產生器工作時,必須建立一個列表list,但是list的記憶體有限制,不可能無限大,為了彌補這一不足,產生器自然而然誕生,產生器是在不斷迴圈的過程中推算出後面的結果,而不需要建立一個完整的list列表,所以不會佔用那麼多記憶體

產生器有很多種產生的方法,其一就是將列表產生式的[]換位()

即:g=(x*x for x in range(5))  輸出時只能用g.next()輸出

即g.next()  #輸出0

g.next()  #輸出1

g.next()  #輸出2

g.next()  #輸出3

g.next()  #輸出4

g.next()  #輸出StopIteration

亦可用迴圈輸出,即:

for n in g

  print n

法二 用yield

例如斐波拉契數列 (每個數都是前兩個數的和)例1,1,2,3,5,8,13.....

一般的函數定義為

def fib(max):

  a,b,n=0,1,0

  if n<max:

    a,b,n=b,a+b,n+1

    print a

如果用產生器修改函數,則只需把print改為yield

 

def fib(max):

 

  a,b,n=0,1,0

 

  if n<max:

 

    a,b,n=b,a+b,n+1

 

    yield a

調用時  for n in fib(6):

      print n

或者   o=fib(5)

   o.next()  進行輸出

fib不是普通的函數,而是generator,在執行過程中,遇到yield就中斷,下次繼續執行,我們在迴圈過程中不斷調用yield,就會不斷中斷。當然要給迴圈設定一個條件來退出迴圈,不然就會產生一個無限數列出來。

python進階特性

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.