Как остановить Python от добавления пробелов во время итерации? - PullRequest
1 голос
/ 02 июня 2010

Мой код Python:

mapArray = [["#","#","#"],["#","#","#"],["#","#","#"]]
for row in mapArray:
    for cell in row:
            print cell,
    print
print

печатает это:

# # #
# # #
# # #

почему бы и нет:

###
###
###

Большое спасибо!

Ответы [ 3 ]

2 голосов
/ 02 июня 2010

Мое предпочтительное решение, когда я хочу, чтобы Python печатал только то, о чем я говорю, без вставки символов новой строки или пробелов, это использование sys.stdout:

from sys import stdout
mapArray = [["#","#","#"],["#","#","#"],["#","#","#"]]
for row in mapArray:
    for cell in row:
            stdout.write(cell)
    stdout.write("\n")
stdout.write("\n")

Документация о выписке гласит, "A space is written before each object is (converted and) written, unless the output system believes it is positioned at the beginning of a line." Вот почему sys.stdout является предпочтительным решением здесь и является причиной, по которой вы видите пробелы в выводе.

2 голосов
/ 02 июня 2010

Или вы можете просто использовать join для построения строки и затем распечатать ее.

>>> mapArray = [["#","#","#"],["#","#","#"],["#","#","#"]]
>>> print '\n'.join([''.join(line) for line in mapArray])
###
###
###
2 голосов
/ 02 июня 2010

Измените print cell, на sys.stdout.write(cell). После импорта sys, конечно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...