自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一篇文章帶你了解Python的迭代知識(shí)

開發(fā) 后端
本文基于Python基礎(chǔ),介紹了Python 迭代的使用。任何可迭代對(duì)象都可以作用于for循環(huán),包括自定義的數(shù)據(jù)類型,只要符合迭代條件,就可以使用for循環(huán)。通過(guò)案例的分析,介紹了兩種常見(jiàn) 迭代的方式。在實(shí)際操作中遇到的難點(diǎn),提供有效的解決方法。

[[388768]]

 一、前言

大家好,我是Go進(jìn)階者。如果給定一個(gè)list或tuple,可以通過(guò)for循環(huán)來(lái)遍歷這個(gè)list或tuple,這種遍歷稱為迭代(Iteration)。

二、案例

在Python中,迭代是通過(guò)for … in來(lái)完成的,而很多語(yǔ)言比如C或者Java,迭代list是通過(guò)下標(biāo)完成的。

比如Java代碼:

  1. for (i=0; i<list.length; i++) {    
  2. n = list[i]; 

注:

可以看出,Python的for循環(huán)抽象程度要高于Java的for循環(huán),因?yàn)镻ython的for循環(huán)不僅可以用在list或tuple上,還可以作用在其他可迭代對(duì)象上。

list這種數(shù)據(jù)類型雖然有下標(biāo),但很多其他數(shù)據(jù)類型是沒(méi)有下標(biāo)的,但是,只要是可迭代對(duì)象,無(wú)論有無(wú)下標(biāo),都可以迭代,

比如dict就可以迭代。

  1. d = {'a': 1, 'b': 2, 'c': 3} 
  2.  for key in d:    
  3.    print(key

注:

因?yàn)閐ict的存儲(chǔ)不是按照l(shuí)ist的方式順序排列,所以,迭代出的結(jié)果順序很可能不一樣。

默認(rèn)情況下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同時(shí)迭代key和value,可以用for k, v in d.items()。

1. 字符串也是可迭代對(duì)象。

因此,也可以作用于for循環(huán):

  1. for ch in 'ABC':    
  2.   print(ch) 

所以,當(dāng)使用for循環(huán)時(shí),只要作用于一個(gè)可迭代對(duì)象,for循環(huán)就可以正常運(yùn)行,而不太關(guān)心該對(duì)象究竟是list還是其他數(shù)據(jù)類型。

那么,如何判斷一個(gè)對(duì)象是可迭代對(duì)象呢?方法是通過(guò)collections模塊的Iterable類型判斷:

  1. from collections import Iterable 
  2. print(isinstance('abc', Iterable))  # str是否可迭代True 
  3. print(isinstance([1, 2, 3], Iterable))  # list是否可迭代True 
  4. print(isinstance(123, Iterable) ) # 整數(shù)是否可迭代False 

如果要對(duì)list實(shí)現(xiàn)類似Java那樣的下標(biāo)循環(huán)怎么辦?

Python內(nèi)置的enumerate函數(shù)可以把一個(gè)list變成索引-元素對(duì),這樣就可以在for循環(huán)中同時(shí)迭代索引和元素本身:

  1. for i, value in enumerate(['A''B''C']):   
  2.   print(i, value) 

上面的for循環(huán)里,同時(shí)引用了兩個(gè)變量,在Python里是很常見(jiàn)的,

比如下面的代碼:

  1. for x, y in [(1, 1), (2, 4), (3, 9)]:     
  2.   print(x, y) 

2. 迭代dict的key和value

了解了如何迭代 dict 的key和value,那么,在一個(gè) for 循環(huán)中,能否同時(shí)迭代 key和value?答案是肯定的。

首先,看看 dict 對(duì)象的 items() 方法返回的值:

  1. d = {'Adam': 95, 'Lisa': 85, 'Bart': 59} 
  2. print(d.items()) 

可以看到,items() 方法把dict對(duì)象轉(zhuǎn)換成了包含tuple的list,對(duì)這個(gè)list進(jìn)行迭代,可以同時(shí)獲得key和value:

  1. for key, value in d.items(): 
  2.     print(  key':', value) 

注:

和values() 有一個(gè) itervalues() 類似, items() 也有一個(gè)對(duì)應(yīng)的 iteritems(),iteritems() 不把dict轉(zhuǎn)換成list,而是在迭代過(guò)程中不斷給出 tuple。

所以, iteritems() 不占用額外的內(nèi)存。

三、總結(jié)

本文基于Python基礎(chǔ),介紹了Python 迭代的使用。任何可迭代對(duì)象都可以作用于for循環(huán),包括自定義的數(shù)據(jù)類型,只要符合迭代條件,就可以使用for循環(huán)。通過(guò)案例的分析,介紹了兩種常見(jiàn) 迭代的方式。在實(shí)際操作中遇到的難點(diǎn),提供有效的解決方法。

歡迎大家積極嘗試,有時(shí)候看到別人實(shí)現(xiàn)起來(lái)很簡(jiǎn)單,但是到自己動(dòng)手實(shí)現(xiàn)的時(shí)候,總會(huì)有各種各樣的問(wèn)題,切勿眼高手低,勤動(dòng)手,才可以理解的更加深刻。

代碼很簡(jiǎn)單,希望對(duì)你學(xué)習(xí)有幫助。

 

責(zé)任編輯:姜華 來(lái)源: Go語(yǔ)言進(jìn)階學(xué)習(xí)
相關(guān)推薦

2020-10-27 10:05:32

JavaScript 數(shù)組迭代

2023-09-01 16:32:36

JavaScript

2021-04-07 06:11:37

Css前端CSS定位知識(shí)

2023-05-12 08:19:12

Netty程序框架

2021-06-30 00:20:12

Hangfire.NET平臺(tái)

2021-04-24 10:19:41

Python函數(shù)指向

2025-02-19 10:39:26

Python高階函數(shù)函數(shù)名

2021-03-24 10:00:32

Python遞歸函數(shù)Python基礎(chǔ)

2023-07-30 15:18:54

JavaScript屬性

2023-05-08 08:21:15

JavaNIO編程

2021-01-26 23:46:32

JavaScript數(shù)據(jù)結(jié)構(gòu)前端

2021-03-09 14:04:01

JavaScriptCookie數(shù)據(jù)

2021-06-24 09:05:08

JavaScript日期前端

2021-09-27 09:18:30

ListIterato接口方法

2023-09-06 14:57:46

JavaScript編程語(yǔ)言

2024-01-30 13:47:45

2024-04-19 14:23:52

SwitchJavaScript開發(fā)

2020-12-08 08:09:49

SVG圖標(biāo)Web

2021-03-05 18:04:15

JavaScript循環(huán)代碼

2021-05-18 08:30:42

JavaScript 前端JavaScript時(shí)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)