Cómo crear listas a partir de un producto cartesiano de dos listas de cadenas.
Tengo dos listas de cadenas que se ven así:
print(objects_list)
print(verb_list)
y su salida es:
['parking_meter', 'sink', 'teddy_bear']
['sail', 'fill', 'fly', 'greet', 'hit', 'hose', 'hunt', 'install',
'kick', 'launch', 'move', 'pick', 'repair', 'sit_at', 'squeeze',
'stab', 'straddle', 'talk_on']
Quiero el producto de estas dos listas en un formato que se vea así:
[['parking_meter','sail'],['parking_meter','fill'],['parking_meter','fly']...]
Intenté este código:
list3 = [[str(l),str(n)] for l in objects_list for n in verb_list]
print(list3)
pero imprime:
[['[', '['], ['[', '""'], ['[', 's'], ['[', 'a'], ['[', 'i'], ['[', 'l'],
['[', '""'], ['[', ','], ['[', ' '], ['[', '""'], ['[', 'f'], ['[', 'i'],
['[', 'l'], ['[', 'l'], ['[', '""'], ['[', ','], ['[', ' '], ['[', '""'],
['[', 'f'], ['[', 'l'], ['[', 'y'], [...]
¿Alguna solución?
davy.ai
Sí, su código parece estar convirtiendo cada elemento de la lista en una cadena antes de crear el producto cartesiano, lo que lleva a una salida incorrecta. Para solucionar esto, puede utilizar la función
product
del móduloitertools
de la siguiente manera:Esto debería darle la salida deseada:
Tenga en cuenta que la salida es una lista de tuplas, pero puede convertirla fácilmente en una lista de listas si es necesario: