2016-07-25 22 views
0

Ich versuche, hier eine Verknüpfung von einigen Listen in einer Liste in Python zu machen, ist ein Beispiel dafür, was ich tue (die Listen viel größer in der realen Code sind):Listen in einer Liste zusammenfügen?

import itertools 

listenv = ["IN","VC","VS"] 
listsize = ["U17-1","U17-2"] 

listevnsize = list(itertools.product(listenv, listsize,)) 

print listevnsize 
#This results in [('IN', 'U17-1'), ('IN', 'U17-2'), ('VC', 'U17-1'), ('VC', 'U17-2'), ('VS', 'U17-1'), ('VS', 'U17-2')] 

Was ich tun möchte, jetzt ist die inneren Listen mit einem kombinieren - zum Beispiel würde ich mit dem Ergebnis zufrieden sein:

[('IN-U17-1'), ('IN-U17-2'), ('VC-U17-1'), ('VC-U17-2'), ('VS-U17-1'), ('VS-U17-2')] 

Also mit anderen Worten mag ich die inneren Listen verbinden, aber wenn ich versuchte, mit:

listevnsizejoined = '-'.join(map(str,listevnsizezip)) 

Wie in einer anderen Frage vorgeschlagen, dies wird alle äußeren Listen in eine große Zeichenfolge wie folgt verbinden:

(('IN', 'U17-1'),)-(('IN', 'U17-2'),)-(('VC', 'U17-1'),)-(('VC', 'U17-2'),)-(('VS', 'U17-1'),) 

ENDLÖSUNG:

import itertools 

listenv = ["IN","VC","VS","VX","RH","HT","DP","AD","PT","PTRH","WP","WPRH","CYVX","HM"]; 
listsize = ["U17-1","U17-2"]; 
listseventeenGR = ["17P:3","17P:4","17P:5.5","17P:7","17P:10","17P:16","17P:22","17P:28","17P:40","17P:49","17P:55","17P:70","17P:100"] 


listevnsize = list(itertools.product(listenv, listsize,)) 

listenvsizejoined = [] 

for x in listevnsize: 
    listenvsizejoined.append('-'.join(i for i in x)) 

print listenvsizejoined 

Dies ist die endgültige Lösung für die Kombination von zwei Listen in alle Kombinationen und dann diese inneren Listen mit einem Bindestrich verbinden. nur

+0

Bearbeitet, um die Ausgabe des Hinweises aus anderen Postings hinzuzufügen. Ich wollte meinen Code vollständig anzeigen und wieso mein Join-Befehl nicht wie gewünscht funktioniert, vielleicht habe ich ihn falsch benutzt. –

Antwort

0

Verwendung str.join

S.join(iterable) -> string 

Return a string which is the concatenation of the strings in the 
iterable. The separator between elements is S. 

l = [] 

for x in listevnsize: 
    l.append('-'.join(i for i in x)) 
+0

Dies ist die richtige Lösung und hat eine großartige Erklärung. Danke, für jeden, der die vollständige Antwort möchte, werde ich es der Frage hinzufügen. –

0

Dies würde umgehen, verwenden zip

new_list = [] 
for i,j in zip(listenv, listsize): 
    new_list.append(('{0}-{1}').format(i,j)) 
+0

Ich habe versucht, mit dieser, aber ich brauche den ursprünglichen Befehl der Kombination: listevnsize = Liste (itertools.product (listenv, listsize,))) Dies ist notwendig, um alle Kombinationen der ersten beiden zu erhalten. Welche Argumente soll ich für list1 und list2 angeben? –

0
listenvsize = ["{}-{}".format(x,y) for x in listenv for y in listsize] 

Das Ergebnis wird nicht eine Liste von Tupeln sowieso sein, da es nur ein Element in dem Tupel ist, dass Sie wollen.