J'ai lu des objets de classe à partir d'un fichier txt et stocké les informations dans une liste. Ma question est de savoir si je veux imprimer le premier attribut mais sauter une ligne peut-il être possible. Dites que le fichier texte est comme ceci:
for i in list: print(i.activity)
Je veux faire une boucle for qui me donne le premier attribut de la liste mais saute une ligne. Par exemple en écrivant:
Activity Time Location Football 8-9 Pitch Basketball 9-10 Gym Lunch 11-12 Home Reading 13-14 Library
# me donne toutes les activités, mais je veux faire du football, déjeuner, lire sans basket
Est-ce possible? Si oui, j'apprécierais un code facile. Je n'ai besoin de rien de avancé
3 Réponses :
Bien sûr, c'est possible:
À l'intérieur de votre boucle, ajoutez la condition
i = 0 for item in list: if i!=1: print (item.activity) i += 1
Donc, dans la deuxième itération, rien ne serait imprimé
Merci, pourriez-vous préciser avec un exemple? Je l'écris comme ceci: for i in list: if i == 1: continue print (i.activity) #Mais rien n'est imprimé
@Rezaamin Peut-être que vous avez i += 1
ci-dessous continue
, auquel cas i
ne i
jamais incrémenté au-delà de 1
? Au lieu de faire comme ci-dessus, essayez for i, item in enumerate(list):
alors vous n'avez pas à incrémenter (ou initialiser) i
vous-même.
Le gars au-dessus de moi a raison - assurez-vous que l'initialisation pour i est quand même faite, peu importe comment, vous pouvez faire ce qu'il a suggéré ou ce que j'ai fait
@jmd_dk J'ai aimé ça mais ça n'a pas sauté la ligne que je voulais. J'ai tous les attributs imprimés. pour i, item dans enumerate (djur): if i! = 2: print (item.activity)
L'exemple ci-dessous lit simplement la chaîne de texte ( text_
) et utilise la fonction list.pop()
pour supprimer le deuxième élément (après l'en-tête). Dans ce cas, la ligne «Basketball».
Ensuite, une autre compréhension de liste simple crée la liste d' activities
qui contient le premier élément de chaque ligne et ignore la ligne d'en-tête.
Exemple de code:
import io txt = """Activity,Time,Location Football,8-9,Pitch Basketball,9-10,Gym Lunch,11-12,Home Reading,13-14,Library """ with io.StringIO(txt) as h: text_ = list(h)
Production:
['Football', 'Lunch', 'Reading']
Installer:
Remarque: ce bloc n'est pas requis pour la fonctionnalité. Utilisé uniquement pour créer la liste text_
partir d'une chaîne.
text = [i.strip().split(',') for i in text_] text.pop(2) activities = [i[0] for i in text[1:]]
Oui, bien sûr, mais vous devriez nommer votre liste python autre chose que list
puisque list
est un mot-clé en python:
row_to_skip=1 for i in range (len (my_list)): item=my_list[i] if (i==row_to_skip): continue print(item.activity)
Suggestion amicale, si je peux. Cette ligne: range (0, len (my_list))
doit lire: range(len(my_list))
. Comme range
et len
sont des fonctions, et zéro est le point de départ par défaut de range
.
je suis d'accord ! c'est plus élégant.
C'était super! Juste une question: ma liste contient des temps différents par exemple football 8-9, je veux quand même sauter la deuxième ligne comme vous l'avez fait mais je veux ajouter mes conditions qui par exemple: imprimer le football si l'utilisateur écrit qu'il arrive à 8 et laisse à 9. J'ai fait deux variables où j'ai placé mes entrées, mais cela n'a pas fonctionné tout a été imprimé (sauf la ligne sautée). Savez-vous comment je peux résoudre ce problème?
peut-être
for i in your_list[::2]:
Cela itérera sur tous les autres éléments de la liste. N'utilisez pas lalist
comme nom, c'est une fonction intégrée.Ma liste est plus grande que ce que j'ai écrit. Je viens d'écrire un exemple pour que [:: 2] saute plus d'éléments que je ne le souhaite.
Voulez-vous ignorer un seul index? Ou plusieurs, sur des positions différentes?
Un index spécifique, alors je veux que tout continue