2016-08-05 10 views
0

Как и в BASH, я могу использовать «echo -n» внутри цикла и печатать все элементы в массив (или список в Python) в одной строке без символа пробела. См. «echo -n значение» ниже во втором цикле.BASH «echo -n value» в Python 2.6/2.x или Python 3.x внутри цикла - одиночная строка без пробела

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 

Как я могу сделать то же самое в Python с использованием для цикла во время итерации каждого значения списка.

PS: Я не хочу использовать "" .join (список). Кроме того, кажется, что «" .join (list) будет работать только в том случае, если мой список в Python имеет значения как тип «string», тогда «» будет работать .join (list) (например, BASH echo -n), но если список имеет Integer aka non-string values ​​(например: как показано в списке номеров в коде ниже), ".join (numbers) или" ".join (str (числа)) все еще не работает (например, BASH echo -n); в этом случае, хотя я использовал , напечатал num, в цикле, он по-прежнему вводил символ пробела.

Я пытаюсь использовать значение печати, (с командой), но он вводит символ пробела.

В Python 2.x, следующий код показывает:

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, 

выход как:

This list contains: 
7 
9 
12 
54 
99 

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

То, что я смотрю на это, как я могу напечатать все элементы списка номера (как показано ниже), используя цикл for и оператор печати в одной строке, когда список имеет нестроковые значения?

79125499 
+0

Посмотрите на этот ответ: http://stackoverflow.com/questions/493386/how-to-print-in-python-without-newline-or-space – m13r

+0

@ m13r Привет, Если я прав, ни один из примеров в приведенной выше ссылке не использует список/массив с целыми/целочисленными значениями, и никто не обратился к проблеме, которая у меня есть, как НЕ печатать "" во время печати list в цикле FOR. В противном случае исправьте. –

+0

BTW, хотя он работает достаточно хорошо, чтобы понять ваше намерение здесь, 'echo -n' на самом деле не является хорошей формой в сценариях оболочки. См. Спецификацию POSIX для 'echo' по адресу http://pubs.opengroup.org/onlinepubs/009604599/utilities/echo.html - использование' -n' делает вывод полностью реализованным; подходящим способом записи содержимого без новой строки является 'printf '% s' 'content" ', или (для обработки обратных косых черт)' printf'% b '"content" '. –

ответ

1

Если я правильно Вас понял, вы пытаетесь напечатать цифры без пробелов между ними ? Если да, попробуйте следующее.

from __future__ import print_function 

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

Результат

12345678910 
Process finished with exit code 0 
+0

Хорошо, это сделало трюк. Благодарю. Странно, что теперь мне нужно жить с версиями 2.x 3.x и совместимостью. В 3.x это было бы хорошо, не так ли? –

+0

Это нормально работает в 3.x – cyberbemon

1

Вы могли бы это:

a = [1, 2, 3, 4] 

concat = "" 

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

print concat 

или без использования отдельной переменной:

# needed if Python version 2.6+ 
from __future__ import print_function 

a = [1, 2, 3, 4] 

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

Да, я согласен, но это невозможно в Python напрямую, не требуя создания дополнительного объекта (т. Е. Concat, как вы посоветовали). –

+1

Я добавил второй фрагмент кода к решению без дополнительной переменной ... – m13r