0
votes

Est-ce que iThable Object une copie de l'objet original?

nums = [1,2,3,4,5]

it = iter(nums)

print(next(it))

print(next(it))

for i in nums:
   print(i)

here the result is:
1
2
1
2
3
4
5
So my question is that when we apply iter method on a object then does it create a copy of object on which it runs next method?

1 commentaires

Il renvoie un iTER ator sur l'objet d'origine. Voir: en.wikipedia.org/wiki/iterator_pattern .


4 Réponses :


0
votes

Le = L'opérateur attribue des valeurs des opérandes latérales à droite aux opérandes latérales gauche "Ie c = a + b attribue la valeur de a + b dans C opérateurs < / p>

Vous ne modifiez pas de variables présentes dans le côté droit d'une ligne d'affectation, une copie de la valeur a une fonction appliquée à celle-ci, puis il est attribué le nouveau nom de variable IT .


0 commentaires

0
votes

Voici un moyen de le comprendre:

lst = ['Hi', 'I am a copy!']
itr = iter(lst)
print(next(itr))
lst[1] = 'I am _not_ a copy!'
print(next(itr))


0 commentaires

0
votes

Non, ils ne le font pas. Certains types de python, par exemple Toutes ses collections, il suffit de supporter d'être itératés sur plusieurs fois. Plusieurs objets itérateurs peuvent contenir des références à la même liste, elles gèrent tout simplement leur propre position dans la liste.

remarque quelques effets: xxx

encore plus évident est le Cas d'itérateurs épuisables et d'appel iTER sur eux: xxx

clairement les itérateurs Share State.


0 commentaires

0
votes

iTer (objet) code> renvoie un objet itérateur em> qui est une version itératrice de l'objet donné à celui-ci étant donné qu'il implémente __ iter __ code>. iter (objet) code> ne crée pas une copie de l'objet.

>>> l=[[1,2],[4,5]]
>>> it=iter(l)
>>>next(it).append(3) #appending to the output of next() mutates the list l
>>> l
[[1,2,3],[4,5]]
>>> next(it).append(6)
>>> l
[[1,2,3],[4,5,6]]
>>> it=iter(l)
>>> l.pop() #Mutating the list l mutated iterator it.
[4,5,6]
>>>list(it)
[[1,2,3]]


0 commentaires