0
votes

Devrais-je utiliser des compréhensions de liste au lieu d'une boucle normale?

problème

Une entreprise souhaite faire une application qui aide les collectionneurs à autocollants à garder une trace de quelles cartes qu'ils ont obtenues, les figures de bâton entrent dans de nombreux autocollants et parfois le collectionneur reçoit des cartes répétées et les plus importants sont les autocollants considérés comme rares.

entrée

La première ligne a x Numéros indiquant les autocollants achetés, le second La ligne a des chiffres INT INT faisant référence aux stickers rares.

EXIT

Une seule ligne contenant le nombre de chiffres de bâtonnets restants.

solution

l'approche en boucle: xxx

l'approche de compréhension de la liste: xxx < / Pré>

Ma question est la solution la meilleure étant la meilleure considération, la lisibilité, l'efficacité et tout?

aussi, ce qui est préférable pour coder les olimdiates?


2 commentaires

La compréhension de la liste est la méthode "pythonic" plus élégante.


Oh, ok thx, je vais l'utiliser à la place


3 Réponses :


1
votes

La compréhension de la liste est:

  • plus concis
  • plus "Pythonic"
  • plus efficace (évite les recherches variables inutiles)
  • plus simple, donc moins de chances de bugs
  • etc.

0 commentaires

4
votes

Ni: la voie pythonique est simplement de compter les occurrences, de ne pas créer une nouvelle liste d'objets volumineux.

rare_stickers_left = len(set(rare_stickers) - set(bought_stickers))


1 commentaires

@Heapoverflow merci; fixé



1
votes

Vous n'avez pas besoin du premier 2 pour les boucles CODE> ICI:

bought_stickers = input().split()
rare_stickers = input().split() 
rare_stickers_left = [int(i) for i in rare_stickers if i not in bought_stickers]
print(len(rare_stickers_left))


1 commentaires

Thx pour la pointe! Le seul problème est que de cette façon la liste est faite de valeurs de chaîne