J'ai deux listes ( Le premier essai ajoute Essayez d'abord P> tb_shade code> et
tb_sun code>) que j'essaie de itérer et appendez un
1 code> à une troisième liste (
Activity_Status code>) Si un critère est rempli ou un
0 code> sinon. Le
tb_shade code> et
tb_sun code> est la même longueur (8760). Et j'essaie de créer une troisième liste (
Activity_status code>) qui est également la même longueur, et qui a une valeur de
0 code> si l'une des valeurs de
tb_shade code> ou
tb_sun code> est en dehors de la plage numérique: 29-39 ou un
1 code> si les valeurs sont dans cette plage. J'ai essayé de quelques manières différentes. J'ai inclus deux de ces tentatives ci-dessous. Ni l'un ni l'autre ne fonctionne.
0 code> pour toutes les lignes de la liste, même si je sais que les critères sont satisfaits à certains moments. Le deuxième essai a une sortie
Activity_Status CODE> Liste des valeurs 122268322 Long. Il devrait être identique à celui des
tb_sun code> et
tb_shade code> 8760. Est-ce que quelqu'un sait comment faire fonctionner cela? Toute aide ou conseil serait appréciée! Merci! P>
activity_status=[]
for i in range(len(tb_shade)):
for q in range(len(tb_sun)):
if tb_shade[i] > 39 or tb_sun[q] < 29:
activity_status.append(0)
if tb_shade[i] < 39 or tb_sun[q] > 29:
activity_status.append(1)
print(len(activity_status)) #122268322
print(len(tb_shade)) #8760
3 Réponses :
Utilisation de la compréhension de la liste, l'élément est 1 si les valeurs de tableau TB_SHADE et TB_SUN sont dans la plage [29, 39]. Sinon, l'élément est 0.
Merci pour votre réponse Pramote! J'ai changé votre code en Activity_Status = [1 si (29 <= ombre <= 39 ou 29 <= Sun <= 39) € 0 pour l'ombre, Sun in TB_SUN)] CODE> ET IT Travaillé parfaitement!
Ajout de quelques explications à ce code améliorerait considérablement la qualité de cette réponse. Voir https://stackoverflow.com/help/how-to-answer
Votre deuxième essai est presque correct. Vous avez niché pour des boucles, donc ce que vous faites réellement est en boucle sur tb_sun 8760 fois et comparer chaque valeur de chaque tableau les uns avec les autres. Essayez ceci:
Merci pour l'aide ici! Bien que lorsque j'exécute votre code, la liste Activity_Status code> a une longueur de
15400 code> au lieu de
8760 code> et je ne sais pas pourquoi
Ma faute. Utilisez ELIF au lieu de si la deuxième instruction SI.
Vous utilisez une itération avec une itération et cela vous donne le carré du résultat que vous attendez. c'est-à-dire au lieu de compter juste de 0 à 8759, il boucle de 0 à 8759 pour 8760 fois pour 8760 fois.
à la place, vous pouvez utiliser un pour la boucle et utiliser cela pour itération des deux listes. P>
second, votre Les critères ne sont pas mutuellement exclusifs de ce que vous avez écrit. Par exemple, si les deux nombres de tb_shade et tb_sun sont respectivement de 30 et 50 respectivement, les deux clauses sont remplies et elles seront toutes deux exécutées. En supposant que vous essayez de vérifier si les chiffres dans les deux cas sont compris entre 29 et 39, j'ai apporté des modifications à votre code. P>
activity_status=[] for i in range(len(tb_shade)): if tb_shade[i]>29 and tb_shade[i]<39 and tb_sun[i]>29 and tb_sun[i]<39: activity_status.append(1) else: activity_status.append(0) print(len(activity_status)) #should give 8760 if both lists are of length 8760 print(len(tb_shade)) #8760
Merci pour cette réponse Siem! Ce code fonctionne, mais je suis légèrement incertain si cela me donne ce que je veux ... J'essaie d'obtenir un 1 code> ajouté à la liste
Activity_Status code> si l'ombre ou le nombre de sun est compris entre 29 et 39 ans, mais je n'ai pas besoin de ces deux chiffres dans la gamme. Je pense que votre code est écrit de sorte que seul un 1 est ajouté si les deux chiffres sont dans cette plage, non?
Oui, le code vérifie si les deux chiffres sont dans cette plage. Si vous souhaitez vérifier si l'un ou l'autre est dans cette plage, vous pouvez remplacer la seconde "et" dans la troisième ligne avec "ou".
FYI: Les questions de réponse minutieuse consomment-elles du temps. Si votre question est résolue b>, dites merci par accepter b> la solution meilleure pour vos besoins b>. i> le i> le i> B> Accepter le chèque B> est sous la flèche haut / bas en haut à gauche de la réponse. Une nouvelle solution peut être acceptée si un meilleur apparaît. Vous pouvez également voter sur la qualité / utilité d'une réponse, avec la flèche haut ou bas, si vous avez une plus grande réputation. Laisser un commentaire Si une solution ne répond pas à la question. B> Que dois-je faire quand quelqu'un répond à ma question? . Merci.