0
votes

Résultat inattendu imprimé après annexé à une liste

Ceci est mon code:

<generator object <genexpr> at 0x7fc8101f76d0>


2 commentaires

Vous n'êtes pas ajouté à une liste nulle part. En effet, il n'y a aucune liste nulle part, seulement un tuple, Temps . Vous dites que vous êtes nouveau à Python, alors qu'attendez-vous exactement (Temps / 10 pour Temp in Temps) Pour faire pourquoi?


En outre, à 0x7fc8101f76d0> n'est pas une erreur. C'est simplement la représentation imprimée d'un objet générateur, ce qui est créé par (Temps / 10 pour Temp in Temps) , appelé une expression génératrice . Si vous êtes nouveau à Python, vous devriez probablement éviter ces types de choses jusqu'à ce que vous ayez une poignée sur les bases de la langue.


5 Réponses :


2
votes

Utiliser des parenthèses autour d'une compréhension en fait une expression génératrice; Si vous souhaitez une liste compréhension, utilisez des crochets: xxx

latéral-note: votre Temps n'est pas un Liste soit (parce que vous avez utilisé des parenthèses, pas des crochets comme le délimiteur); C'est un tuple (semblable à une liste , mais immutable). Cela fonctionne très bien dans ce cas car vous n'essayez pas de le modifier.


0 commentaires

0
votes

Premier, Temps code> est un tuple, pas une liste. Une liste utiliserait des crochets: xxx pré>

pour votre utilisation, cela n'a pas d'importance s'il s'agit d'un tuple ou d'une liste, cependant. P>

second, ( Temps / 10 pour Temp in Temps) Code> est une expression génératrice, pas une compréhension de liste. Vous voulez P>

new_temps = [temps/10 for temp in temps]


0 commentaires

0
votes

Vous utilisez une expression génératrice.

soit vous devez utiliser la compréhension de la liste correspondante à l'aide de [ ... ] au lieu de (< / code> ... ) : xxx

donne xxx

ou vous devez itérer sur le générateur: xxx

donne xxx

Vous pouvez également le convertir en liste (qui fonctionne par itération dessus): xxx

donne xxx

(itération par exemple avec un pour la boucle Travaillez également avec la compréhension de la liste utilisée dans la première option, bien que si vous avez beaucoup d'articles et tous vous allez faire, c'est itérer une fois sur elle, alors il est plus efficace à la mémoire d'utiliser le ( ... ) forme.)


J'ai également corrigé un bug dans l'expression génératrice - devrait être TEMP / 10 , pas Temps / 10 .


2 commentaires

* expression génératrice


@ Juanpa.arrivillaga Merci.



0
votes

Vous déclarez des listes en Python avec [], également votre pour appeler tout votre liste, pas l'élément, qui est "Temps", pas "Temps". Ce serait comme ça:

temps = [345, 9876, 23, 100, 567]
new_temps = [temp / 10 for temp in temps]
print(new_temps)
>> [34.5, 987.6, 2.3, 10.0, 56.7]


0 commentaires

0
votes

Si vous souhaitez convertir Temps en liste, vous pouvez utiliser:

temps = (345, 9876, 23, 100, 567)
new_temps = [temp / 10 for temp in temps]
print(new_temps)


0 commentaires