2016-08-05 59 views
0

Wie in BASH kann ich "echo-n" innerhalb einer Schleife verwenden und alle Elemente in ein Array (oder eine Liste in Python) in einer einzigen Zeile ohne Leerzeichen "" Zeichen. Siehe "echo-n Wert" unten in der zweiten Schleife.BASH "echo-n Wert" in Python 2.6/2.x oder Python 3.x innerhalb einer Schleife - einzelne Zeile ohne Leerzeichen

Arun [email protected] MINGW64 ~ 
$ a=(1 2 33 four) 

Arun [email protected] MINGW64 ~ 
$ for v in ${a[@]}; do echo $v; done 
1 
2 
33 
four 

Arun [email protected] MINGW64 ~ 
$ for v in ${a[@]}; do echo -n $v; done 
1233four 
Arun [email protected] MINGW64 ~ 
$ for v in ${a[@]}; do echo -n "$v "; done 
1 2 33 four 

Wie kann ich das gleiche tun in Python für-Schleife, während jede Werteliste iterieren.

PS: Ich möchte "" .join (Liste) nicht verwenden. Es scheint auch wie "" .join (Liste) funktioniert nur, wenn meine Liste in Python Werte als "Strings" -Typ dann "" .join (Liste) funktioniert (wie BASH echo -n) aber wenn die Liste hat Integer aka Nicht-String-Werte (zum Beispiel: wie in der Liste Zahlen im folgenden Code), "" .join (Zahlen) oder "" .join (str (Zahlen)) immer noch nicht funktioniert (wie BASH echo-n); In diesem Fall, obwohl ich print num, in der Schleife verwendete, führte es immer noch ein Leerzeichen "" ein.

Ich versuche Druckwert zu verwenden, (mit einem Befehl), aber es wird ein Leerzeichen "" Zeichen eingeführt.

In Python 2.x, der folgende Code zeigt:

numbers = [7, 9, 12, 54, 99] #"".join(..) will NOT work or print val, will not work here 
strings = ["1", "2", "33", "four"] #"".join(..) will work as values are strings type. 

print "This list contains: " 

#This will print each value in list numbers but in individual new line per iteration of the loop. 
for num in numbers: 
    print num 

print "" 
print "".join(str(numbers)) 
print "".join(strings) 

#PS: This won't work if the values are "non-string" format as I'm still getting a space character (see output below) for each print statement for printing num value 
for num in numbers: 
    print num, 

Ausgabe als:

This list contains: 
7 
9 
12 
54 
99 

[7, 9, 12, 54, 99] 
1233four 
7 9 12 54 99 

Was ich suche ist, wie ich alle Elemente der Liste drucken können Zahlen (wie unten gezeigt) mit for-Schleife und eine print-Anweisung in einer einzigen Zeile, wenn die Liste nicht-String-Werte hat?

79125499 
+0

Werfen Sie einen Blick auf diese Antwort: http://stackoverflow.com/questions/493386/how-to-print-in-python-without-newline-or-space – m13r

+0

@ m13r Hallo, wenn ich recht habe, verwendet keines der Beispiele in der obigen Verbindung eine Liste/ein Array mit einigen/allen Integer-Werten, und keines behebt das Problem, das ich habe, wie man während des Druckens NICHT druckt Listenwert in einer FOR-Schleife. Bitte korrigieren Sie das Gegenteil. –

+0

BTW, während es gut genug funktioniert, um Ihre Absicht hier zu kommen, ist "echo-n" nicht wirklich gute Form in Shell-Skripten. Siehe die POSIX-Spezifikation für "echo" unter http://pubs.opengroup.org/onlinepubs/009604599/utilities/echo.html - die Verwendung von "-n" macht die Ausgabe vollständig implementierungsdefiniert; Der geeignete Weg, um Inhalte ohne Zeilenumbruch zu schreiben, ist 'printf '% s'" content "' oder (um Backslash-Escape-Zeichen zu verarbeiten) 'printf '% b'" content "'. –

Antwort

1

Wenn ich Sie recht verstehe, Sie versuchen, Zahlen zwischen ihnen ohne Raum drucken ? Wenn ja, versuchen Sie Folgendes.

from __future__ import print_function 

for i in range(1, 11): 
    print (i, end='') 

Ergebnis

12345678910 
Process finished with exit code 0 
+0

OK, das hat den Trick gemacht. Vielen Dank. Es ist seltsam, dass ich jetzt mit 2.x 3.x Versionen und Kompatibilitäten leben muss. In 3.x wäre es gut, oder? –

+0

Es wird gut in 3.x funktionieren – cyberbemon

1

Sie könnten dazu:

a = [1, 2, 3, 4] 

concat = "" 

for i in a: 
    concat = concat + str(i) 

print concat 

oder ohne eine separate Variable:

# needed if Python version 2.6+ 
from __future__ import print_function 

a = [1, 2, 3, 4] 

for i in a: 
    print(i, end="") 
+1

Ja, ich stimme zu, aber ist es in Python nicht direkt möglich, ohne ein zusätzliches Objekt erstellen zu müssen (d. H. Concat, wie Sie es empfohlen haben). –

+1

Ich habe der Lösung ein zweites Code-Snippet ohne eine zusätzliche Variable hinzugefügt ... – m13r