actions multiples en compréhension de liste python
Je voudrais savoir comment effectuer plusieurs commandes en une compréhension de liste.
Pouvez-vous me donner un exemple de quelque chose de simple comme:
[print ("bla1") and print ("bla2") for i in list]
donc pour une liste de 4 de longueur 4, j'aurais:
bla1
bla2
bla1
bla2
bla1
bla2
bla1
bla2
Dtrangely assez je n'ai pas trouver facilement de la documentation. (Si vous pouvez voir une raison évidente pour laquelle je n'ai pas et ne laissez-moi savoir comment devrais-je recherche pour ce genre de chose qui serait encore mieux).
EDIT: OK, c'était un très mauvais exemple en fonction des commentaires.
Je suis intéressé par la création d'une nouvelle à partir d'une ancienne mais je sens que j'ai besoin de deux commandes pour le faire. (pas une simple impression, bien sûr).
Par exemple. J'ai une liste de listes, et je veux créer une liste à la suite de la manipulation de la sous-listes.
source d'informationauteur Lost_DM
Vous devez vous connecter pour publier un commentaire.
N'utilisez pas de compréhension de liste pour les commandes. Interprétations de la liste sont pour la création de listespas pour les commandes. Utiliser un bon vieux boucle:
Interprétations de la liste sont de merveilleuses choses étonnantes plein de licornes et de chocolat, mais ils ne sont pas une solution pour tout.
Vous pouvez utiliser un tuple pour faire le travail comme ceci:
c'est le travail correctement.
Interprétations de la liste sont uniquement pour la production de données sous forme de liste, pas pour l'exécution d'instructions (ou tout autre effet secondaire, comme l'écriture dans un fichier) à plusieurs reprises. Utiliser un
for
regarder pour que l'.En supposant que vous souhaitez générer une liste
['bla1', 'bla2', 'bla1', ...]
: Vous ne pouvez pas le faire en général, à chaque itération met qu'une seule valeur dans la liste. Cette valeur peut être une liste elle-même, mais alors vous avez une liste de listes.Dans des cas spécifiques, comme dans votre exemple, il est cependant possible: Utiliser
['bla' + str(i + 1) for x in list for i in range(2)]
qui parcourt plus derange(2)
pour chaquex in list
et génère donc deux valeurs par élément danslist
. (list
est un mauvais nom pour une variable si, comme c'est déjà pris par le groupe builtin.)Si "j'ai besoin de deux commandes" signifie qu'il existe deux fonctions, ils doivent être liés d'une certaine façon.
Si ce n'est pas le cas, vous aurez à fournir des définitions de fonctions (un) ne peut pas être composée et (b) créer un résultat unique pour la nouvelle séquence.
Utiliser la liste de compréhension que pour la création de listes. Votre exemple ne pas utiliser les valeurs de votre liste à tous.
Selon les docs:
"Interprétations de la liste de fournir de manière concise pour créer des listes à partir de séquences."
Dans le programme ci-dessus, nous n'avons même pas de soins sur les valeurs dans la liste. Si vous avez été à la recherche pour une application différente de la compréhension de liste de ce que vous avez dit dans votre problème, puis faire après.
Pour ce qu'il vaut, il est possible d'utiliser la liste.ajouter dans la liste de compréhension pour produire une nouvelle liste tout en ignorant la sortie principale de la compréhension de liste. L'OP mentionne une liste de listes. Prenons, par exemple:
Puis créer une nouvelle liste par la manipulation de chaque sous-liste (comme l'OP décrit dans l'édition)
Cela ne crache une redondant liste de listes avec Nvos, mais aussi remplit la variable new_list avec le produit et la somme des sous-listes.
Dans certains cas, il peut être acceptable d'appeler une fonction avec les deux états.
Pouvez également envoyer un argument à la fonction.
De sortie: