Maison > développement back-end > Tutoriel Python > Un article pour vous aider à comprendre les connaissances en itération de Python

Un article pour vous aider à comprendre les connaissances en itération de Python

Libérer: 2023-07-25 16:44:53
avant
1780 Les gens l'ont consulté

1. Introduction

Bonjour à tous, je suis un joueur avancé de Go. Si une liste ou un tuple est donné, la liste ou le tuple peut être parcouru via une boucle for. Ce parcours est appelé itération.


2. Cas

En Python, l'itération se fait via for... in, tandis que dans de nombreux langages comme C ou Java, l'itération des listes se fait via des indices.

Par exemple, le code Java :

for (i=0; i<list.length; i++) {   
n = list[i];
}
Copier après la connexion

Remarque :

On peut voir que le niveau d'abstraction de la boucle for de Python est supérieur à celui de la boucle for de Java, car La boucle peut non seulement être utilisée sur des listes ou des tuples, elle peut également être utilisée sur d'autres objets itérables.

Bien que la liste des types de données comporte des indices, de nombreux autres types de données n'ont pas d'indices. Cependant, tant qu'il s'agit d'un objet itérable, il peut être itéré qu'il ait ou non un indice,

comme. dict. Itérer.

d = {&#39;a&#39;: 1, &#39;b&#39;: 2, &#39;c&#39;: 3}
 for key in d:   
   print(key)
Copier après la connexion

Un article pour vous aider à comprendre les connaissances en itération de Python

注:

因为dict的存储不是按照list的方式顺序排列,所以,迭代出的结果顺序很可能不一样。

默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同时迭代key和value,可以用for k, v in d.items()。

1. 字符串也是可迭代对象。

因此,也可以作用于for循环:

for ch in &#39;ABC&#39;:   
  print(ch)
Copier après la connexion

Un article pour vous aider à comprendre les connaissances en itération de Python

所以,当使用for循环时,只要作用于一个可迭代对象,for循环就可以正常运行,而不太关心该对象究竟是list还是其他数据类型。

那么,如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:

from collections import Iterable
print(isinstance(&#39;abc&#39;, Iterable))  # str是否可迭代True
print(isinstance([1, 2, 3], Iterable))  # list是否可迭代True
print(isinstance(123, Iterable) ) # 整数是否可迭代False
Copier après la connexion

Un article pour vous aider à comprendre les connaissances en itération de Python

如果要对list实现类似Java那样的下标循环怎么办?

Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身:

for i, value in enumerate([&#39;A&#39;, &#39;B&#39;, &#39;C&#39;]):  
  print(i, value)
Copier après la connexion

Un article pour vous aider à comprendre les connaissances en itération de Python

上面的for循环里,同时引用了两个变量,在Python里是很常见的,

比如下面的代码:

for x, y in [(1, 1), (2, 4), (3, 9)]:    
  print(x, y)
Copier après la connexion

Un article pour vous aider à comprendre les connaissances en itération de Python

2. 迭代dict的key和value

了解了如何迭代 dict 的key和value,那么,在一个 for 循环中,能否同时迭代 key和value?答案是肯定的。

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

d = {&#39;Adam&#39;: 95, &#39;Lisa&#39;: 85, &#39;Bart&#39;: 59}
print(d.items())
Copier après la connexion

Un article pour vous aider à comprendre les connaissances en itération de Python

可以看到,items() 方法把dict对象转换成了包含tuple的list,对这个list进行迭代,可以同时获得key和value:

for key, value in d.items():
    print(  key, &#39;:&#39;, value)
Copier après la connexion

Un article pour vous aider à comprendre les connaissances en itération de Python

注:

和values() 有一个 itervalues() 类似, items() 也有一个对应的 iteritems(),iteritems() 不把dict转换成list,而是在迭代过程中不断给出 tuple。

所以, iteritems() 不占用额外的内存。


3. Résumé

Cet article est basé sur les bases de Python et présente l'utilisation de l'itération Python. Tout objet itérable peut être utilisé dans une boucle for, y compris les types de données personnalisés. Tant que les conditions d'itération sont remplies, une boucle for peut être utilisée. Grâce à l'analyse de cas, deux méthodes d'itération courantes sont introduites. Apporter des solutions efficaces aux difficultés rencontrées dans les opérations réelles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:Go语言进阶学习
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal