2017-06-02 2 views
-2

Hey Ich möchte Zeichenfolge verbinden, aber mit 2 verschiedenen Trennzeichen Symbole in geraden und ungeraden Situation:Join Zeichenfolge mit verschiedenen Trennzeichen

Ich habe Liste

l = [1,2,3,4,5,6,7,8,9] 

Ich brauche ich es so verbinden :

1 || 2 || \n 3 || 4 || \n 5 || 6 || \n 7 || 8 || \n 9 

Also nach jeder zwei Elemente eine zusätzliche Zeilenschaltung hinzugefügt.

+1

Bitte erläutern Sie die Muster hinter den Trennzeichen und zeig uns was du bisher versucht hast! –

+1

Haben Sie schon selbst etwas probiert? Wie weit bist du gekommen? –

+3

Bitte wechseln Sie nicht die erwartete Ausgabe. Hättest du das nicht im Voraus bestimmen können? –

Antwort

3

Join alle zwei Elemente, die Ergebnisse dann beitreten:

' || \n '.join([' || '.join([str(v) for v in l[i:i + 2]]) for i in range(len(l))]) 

oder aufgeteilt in zwei Ausdrücke:

paired = [' || '.join([str(v) for v in l[i:i + 2]]) for i in range(len(l))] 
final = ' || \n '.join(paired) 

Letzteres funktioniert besser mit veränderter erwarteten Ausgabe.

Demo:

>>> ' || \n '.join([' || '.join([str(v) for v in l[i:i + 2]]) for i in range(len(l))]) 
'1 || 2 || \n 2 || 3 || \n 3 || 4 || \n 4 || 5 || \n 5 || 6 || \n 6 || 7 || \n 7 || 8 || \n 8 || 9 || \n 9' 
+0

Großartig, danke! Es ist was ich brauche. Aber ich muss in Generatoren üben, um dieses Selbst zu schreiben :) – maxou

0

so etwas?

' || '.join(str(n) if n % 2 else '\n ' + str(n) for n in l) 
+0

Das wird nicht funktionieren, wenn die Eingänge keine fortlaufenden Nummern sind. –

+0

Außerdem wurde die erwartete Ausgabe geändert, Sie müssten Ihre Bedingung oder Ihre Ausdrücke austauschen, und an diesem Punkt erhalten Sie am Anfang ein streunendes "\ n". –

0

Ich habe dieses kleine Skript:

l = [1,2,3,4,5,6,7,8,9] 
ret="" 

for i in l: 
    ret=ret + str(i); 
    if i != 9: 
     ret = ret + " || "; 
    if i % 2 == 0: 
     ret = ret + "\n "; 
ret 

`` `

+0

Dies ist eine dynamischere Version mit Kommentaren: l = [1,2,3,4,5,6,7,8,9] ret = "" für i in l: ret = ret + str (i); # Add double pipe bis auf das letzte Vorkommen wenn i! = L [-1]: ret = ret + "||"; # Alle 2 Werte, gehe zu Newline wenn ich% 2 == 0: ret = ret + "\ n"; ret –

0

Dies ist eine dynamischere Version mit Kommentaren:

l = [1,2,3,4,5,6,7,8,9] 
ret="" 

for i in l: 
    ret=ret + str(i); 
    # Add double pipe except for the last occurence 
    if i != l[-1]: 
     ret = ret + " || "; 
    # Every 2 values, go to newline 
    if i % 2 == 0: 
     ret = ret + "\n "; 
ret 
0
Hey guys am just a beginner in python but i tried to come up with a code for that question above i hope it is helpful somehow. 
l = [1,2,3,4,5,6,7,8,9] 
lst = [] 
lst_odd = [] 
delimeter1 = '| |' 
delimeter2 = "/n" 
count = 0 
for num in l: 
    if count == 0: 
     x = str(num) 
     lst.append(x) 
     count += 1 
    else: 
     if num % 2 == 0: 
      y = str(num) 
      lst.append(y) 
     else: 
      z = str(num) 
      lst_odd.append((delimeter2+z)) 
    if count == 2: 
      break 
main = [lst[0],lst[1],lst_odd[0],lst[2],lst_odd[1],lst[3],lst_odd[2],lst[4],lst_odd[3]] 
s = delimeter1.join(main) 
print(s)    
+0

hatte immer noch Probleme mit diesem "\ n" Trennzeichen, da es Space erstellt. Also entschied ich mich zuerst zu ändern und sehen, ob der Code fortfahren würde – joshua

Verwandte Themen