У меня есть такой код:
>>> for i in xrange(20):
... print 'a',
...
a a a a a a a a a a a a a a a a a a a a
Я хочу вывести 'a'
без ' '
этого:
aaaaaaaaaaaaaaaaaaaa
Является ли это возможным?
python
string
printing
python-2.x
pythonFoo
источник
источник
"".join("a" for i in xrange(20))
. (Это гораздо более гибко, чем просто делать"a" * 20
, поскольку я предполагаю, что это упрощенный пример).Ответы:
Есть несколько способов добиться своего результата. Если вам просто нужно решение для вашего случая, используйте умножение строк, как упоминает @Ant . Это будет работать, только если каждый из ваших
print
операторов выводит одну и ту же строку. Обратите внимание, что он работает для умножения строк любой длины (например,'foo' * 20
работает).Если вы хотите сделать это в целом, создайте строку и затем распечатайте ее один раз. Это займет немного памяти для строки, но сделает только один вызов
print
. Обратите внимание, что объединение строк+=
теперь линейно зависит от размера объединяемой строки, поэтому это будет быстро.Или вы можете сделать это напрямую, используя sys.stdout . write () , который
print
является оболочкой. Будет записана только необработанная строка, которую вы ей даете, без какого-либо форматирования. Обратите внимание, что новая строка не печатается даже в конце 20a
секунд.Python 3 преобразует
print
оператор в функцию print () , которая позволяет вам установитьend
параметр. Вы можете использовать его в версии> = 2.6, импортировав из__future__
. Я бы избегал этого в любом серьезном коде 2.x, так как это будет немного сбивать с толку тех, кто никогда не использовал 3.x. Тем не менее, он должен дать вам представление о некоторых достоинствах, которые приносит 3.x.источник
"".join(...)
Вместо этого используйте .+=
в Python - это операция с постоянным временем для конкатенации одного символа.Из PEP 3105: печать как функция в документе Что нового в Python 2.6 :
Очевидно, что это работает только с python 3.0 или выше (или 2.6+ с a
from __future__ import print_function
в начале). Этотprint
оператор был удален и сталprint()
функцией по умолчанию в Python 3.0.источник
Вы можете подавить пробел, напечатав пустую строку в stdout между
print
операторами.Однако более четкое решение - сначала построить всю строку, которую вы хотите распечатать, а затем вывести ее с помощью одного
print
оператора.источник
sys.stdout.write()
в этом случае удобнее использовать только . Однако я хотел показать, что запись пустой строки в stdout подавляет пространство между элементами, записанными с использованиемprint
, что может быть полезно в аналогичных ситуациях.Вы можете напечатать символ возврата (
'\b'
):результат:
источник
Python 3.x:
Python 2.6 или 2.7:
источник
Если вы хотите, чтобы они появлялись по одному, вы можете сделать это:
sys.stdout.flush()
необходимо для принудительной записи символа при каждом запуске цикла.источник
Просто в качестве примечания:
Печать - это O (1), но построение строки и последующая печать - O (n), где n - общее количество символов в строке. Так что да, хотя построение строки «чище», это не самый эффективный способ сделать это.
Я бы сделал это следующим образом:
Теперь у вас есть «функция печати», которая печатает любую строку, которую вы ей даете, не возвращая каждый раз новый символ строки.
Результатом будет: Hello, World!
Однако, если вы хотите напечатать целые числа, числа с плавающей запятой или другие нестроковые значения, вам придется преобразовать их в строку с помощью функции str ().
На выходе будет: 2 4
источник
Либо то, что говорит Ant , либо накапливается в строку, а затем выводится один раз:
источник
без чего? ты имеешь ввиду
?
источник
это действительно просто
для версий python 3+ вам нужно написать только следующие коды
просто преобразуйте цикл в следующие коды, вам не нужно беспокоиться о других вещах
источник
ВОТ ЭТО ДА!!!
Это довольно долгое время назад
Теперь в python 3.x это будет довольно просто
код:
вывод:
Подробнее о функции print ()
Здесь :
вы можете распечатать несколько значений, используя запятые
3 значения будут разделены знаком '-'
вы можете использовать любой символ вместо этой четной строки, например sep = '@' или sep = 'good'
по умолчанию функция печати помещает символ '\ n' в конец вывода
но вы можете использовать любой символ или строку, изменив значение конечной переменной
например end = '$' или end = '.' или end = 'Привет'
это значение по умолчанию, стандартный вывод системы
используя этот аргумент, вы можете создать поток выходного файла, например
с помощью этого кода вы создадите файл с именем output.txt, в котором будут храниться ваши выходные данные Я программист
Это значение по умолчанию, используя flush = True, вы можете принудительно очистить поток
источник
так просто, как, что
источник