Je suis donc censé prendre un tableau x et un tableau y, et créer un nouveau tableau de paires de sorte que les éléments ne soient pas égaux. Voici mon code:
x=[1,2,3,4]
y=[2,4,6]
my_list=[]
for a in x:
for b in y:
if a!=b:
list=[a,b]
my_list.append(list)
#my_list+=[(a,b) for (a,b) in (x,y) if (a!=b)]
print (my_list)
Ainsi, le résultat est: [[1, 2], [1, 4], [1, 6], [2, 4], [2, 6], [3, 2], [3, 4], [3, 6], [4, 2], [4, 6]]
Sans rien importer , comment puis-je réduire cela avec la compréhension de liste ET enchaîné pour les déclarations. Ma maigre tentative est dans la section #commentaire.
3 Réponses :
Voici comment vous pouvez le faire en utilisant une compréhension de liste:
[[1, 2], [1, 4], [1, 6], [2, 4], [2, 6], [3, 2], [3, 4], [3, 6], [4, 2], [4, 6]]
Sortie
x=[1,2,3,4] y=[2,4,6] [[a,b] for a in x for b in y if a!=b]
Merci! J'étais si proche dans toutes mes tentatives, mais c'est très simple. Je souhaite que Python rende la syntaxe de compréhension de liste plus facile.
@ user5179531 n'oubliez pas d'accepter la réponse si cela vous a aidé, merci! :-)
Vous pouvez également éviter de créer des variables x et y en écrivant le code suivant
[[i, j] pour i dans [1, 2, 3, 4] pour j dans [2, 4, 6] si i! = j]
Il est préférable d'avoir des variables pour les listes, au cas où elles seraient assez grandes. Vous n'obtenez pas de points supplémentaires en utilisant moins de variables;)
@ ÓscarLópez Je ne comprends pas votre commentaire. Êtes-vous en train de dire qu'il vaut mieux avoir deux boucles for qu'une contraction python ou parlez-vous du nom des variables "i", "j"? Je pense que les contractions python sont un moyen très pythonique de parcourir des tableaux et sont très acceptées par toute la communauté python.
@ ÓscarLópez Je suis d'accord, mais ce n'est qu'une manière de plus de le faire.
La question sur laquelle je travaillais demandait qu'elles soient des variables, afin qu'elles puissent être modifiées à volonté. Les écrire explicitement dans le code les "câblent". C'est pourquoi j'ai utilisé x et y.
@Nico ce n'est pas du tout ce que je dis. Je ne parle même pas de compréhensions (pas de contractions comme tu le dis). Je ne parle que des noms de variables.
C'est aussi un endroit où vous pouvez utiliser itertools pour créer la sortie. Vous obtenez le même résultat qu'une compréhension de liste, mais avec un peu moins de code.
import itertools x=[1,2,3,4] y=[2,4,6] list(itertools.product(x, y))