Python implémente une méthode pour implémenter des objets itérables à l'aide de générateurs

小云云
Libérer: 2018-03-29 14:17:31
original
2116 Les gens l'ont consulté

Cet article présente principalement en détail comment python utilise les générateurs pour implémenter des objets itérables. Il a une certaine valeur de référence. Les amis intéressés peuvent s'y référer. J'espère qu'il pourra vous aider.

Analyse de cas :  

Implémentez une classe d'objets itérables qui peuvent itérer tous les nombres premiers dans une plage donnée :

pn = Nombre (1 , 30)

pour k dans pn :

print(k)

Le résultat est : 2,3,5,7,11,13,17,19 , 23,29

Comment résoudre ce problème ?

Implémentez la méthode __iter__ de cette classe dans une fonction génératrice, et renvoyez un nombre premier à chaque fois


#!/usr/bin/python3
class Number(object):
 def __init__(self, start, end):
  self.start = start
  self.end = end
   
 # 判断一个数字是否是素数
 def get_num(self, k):
  if k >= 2:
   for i in range(2, k):
    if k % i == 0:
     return False
   return True
  
 def __iter__(self):
  for k in range(self.start, self.end+1):
   if self.get_num(k):
    # 是素数yield出去
    yield k
     
if __name__ == '__main__':
 num = Number(2, 30)
 for i in num:
  print(i)
Copier après la connexion

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:php.cn
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!