2 votes

À chaque élément (chaîne de caractères) de la liste1, ajoutez un élément de la liste2 en Python.

Il y a deux listes :

list1  = ["shirts","jeans"]

list2 = ["white","red","yellow"]

A partir de ces deux listes, je veux faire la troisième :

list3 = ["white shirts","red shirts","yellow shirts","white jeans","red jeans", "yellow jeans"]

Ainsi, pour chaque élément (chaîne) de liste 1 pour être ajouté un élément de la liste 2 .

J'ai le code suivant :

my_list1 = ['shirts', 'jeans']
string = ' red'
my_new_list1 = [x + string for x in my_list1]
print (my_new_list1)

my_list2 = ['shirts', 'jeans']
string = ' white'
my_new_list2 = [x + string for x in my_list2]
print (my_new_list2)

my_list3 = ['shirts', 'jeans']
string = ' yellow'
my_new_list3 = [x + string for x in my_list3]
print (my_new_list3)

mais ce bout de code n'est pas exactement ce dont on a besoin. de plus, il faut que la liste 1 et la liste 2 soient extraites de list1.txt et list2.txt, et que la liste 3 qui en résulte soit exportée vers list3.txt.

3voto

Horace Points 954

Si l'ordre n'est pas important, vous pouvez le faire :

from itertools import product 

l1 = ["shirts", "jeans"]
l2 = ["white", "red", "yellow"]

result = [' '.join(a) for a in product(l2, l1)]

['white shirts',
 'white jeans',
 'red shirts',
 'red jeans',
 'yellow shirts',
 'yellow jeans']

1voto

Diana Ayala Points 47

Je suppose que vous essayez de faire quelque chose comme ça :

l1 = ['shirts', 'jeans']
l2 = ['white', 'red', 'yellow']
l3 = [j + " " + i for i in l1 for j in l2]

print(l3)

Donc la sortie sera :

['white shirts', 'red shirts', 'yellow shirts', 'white jeans','red jeans', 'yellow jeans']

Édité :

Donc, avec les fichiers .txt, je ferais ceci :

import pandas as pd

l1 = pd.read_csv('list1.txt', header = None).values.flatten()
l2 = pd.read_csv('list2.txt', header = None).values.flatten()
l3 = [j + " " + i for i in l1 for j in l2]

with open('list3.txt', 'w') as f:
    for item in l3:
        f.write("%s\n" % item)

1voto

prashant rana Points 2648
# your code goes here
list1 = ['shirts','jeans']
list2 = ['white','red','yellow']
result = ['{} {}'.format(color, cloth) for cloth in list1 for color in list2 ]
print(result)

sortie

['white shirts', 'red shirts', 'yellow shirts', 'white jeans', 'red jeans', 'yellow jeans']

1voto

py_dude Points 542

Cela fera l'affaire :

list3 = [y + " " + x for y in list1 for x in list2]

Le résultat devrait être trié comme ça : list3 = ["white shirts","red shirts","yellow shirts","white jeans","red jeans", "yellow jeans"] ?

1voto

Daniel Jimenez Points 2299

Vous pouvez faire une compréhension de liste pour obtenir list3

list3 =   ["{} {}".format(y,x) for x in list1 for y in list2]

sortie

     ['white shirts',
 'red shirts',
 'yellow shirts',
 'white jeans',
 'red jeans',
 'yellow jeans']

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X