Как «правильно» распечатать список? - PullRequest
79 голосов
/ 27 марта 2011

Итак, у меня есть список:

['x', 3, 'b']

И я хочу вывод:

[x, 3, b]

Как я могусделать это в Python?

Если я сделаю str(['x', 3, 'b']), я получу один с кавычками, но я не хочу кавычек.

Ответы [ 9 ]

163 голосов
/ 27 марта 2011

В Python 2:

mylist = ['x', 3, 'b']
print '[%s]' % ', '.join(map(str, mylist))

В Python 3 (где print - встроенная функция, а не синтаксическая функция):

mylist = ['x', 3, 'b']
print('[%s]' % ', '.join(map(str, mylist)))

Оба возвращают:

[x, 3, b]

Это использует функцию map() для вызова str для каждого элемента mylist , создавая новый список строк, который затем объединяется в одну строку с str.join(). Затем оператор % форматирования строки подставляет строку вместо %s в "[%s]".

13 голосов
/ 24 марта 2016

Это простой код, поэтому, если вы новичок, вы должны понять его достаточно легко.

    mylist = ["x", 3, "b"]
    for items in mylist:
        print(items)

Он печатает их все без кавычек, как вы хотели.

13 голосов
/ 27 марта 2011

Если вы используете Python3:

print('[',end='');print(*L, sep=', ', end='');print(']')
12 голосов
/ 19 сентября 2016

Использование только печати:

>>> l = ['x', 3, 'b']
>>> print(*l, sep='\n')
x
3
b
>>> print(*l, sep=', ')
x, 3, b
9 голосов
/ 27 марта 2011

Вместо использования map я бы рекомендовал использовать выражение генератора с возможностью join для принятия итератора:

def get_nice_string(list_or_iterator):
    return "[" + ", ".join( str(x) for x in list_or_iterator) + "]"

Здесь join является функцией-членомкласс строки str.Он принимает один аргумент: список (или итератор) строк, а затем возвращает новую строку со всеми элементами, объединенными, в данном случае, ,.

6 голосов
/ 27 марта 2011

Вы можете удалить все нежелательные символы из строки, используя метод translate() с None для аргумента table, за которым следует строка, содержащая символы вы хотите удалить его аргумент deletechars.

lst = ['x', 3, 'b']

print str(lst).translate(None, "'")

# [x, 3, b]

Если вы используете версию Python до 2.6, вам нужно вместо этого использовать функцию translate() модуля string, потому что способность передавать None как table аргумент не был добавлен до Python 2.6. Использование выглядит следующим образом:

import string

print string.translate(str(lst), None, "'")

Использование функции string.translate() также будет работать в версии 2.6+, поэтому ее использование может быть предпочтительным.

3 голосов
/ 27 марта 2011

Вот интерактивный сеанс, показывающий некоторые шаги в однострочнике @ TokenMacGuy.Сначала он использует функцию map для преобразования каждого элемента в списке в строку (фактически, он создает новый список, а не преобразовывает элементы в старом списке).Затем он использует строковый метод join, чтобы объединить эти строки с ', ' между ними.Остальное - просто форматирование строк, что довольно просто.(Правка: этот экземпляр прост; форматирование строк в целом может быть несколько сложным.)

Обратите внимание, что использование join - это простой и эффективный способ построения строки из нескольких подстрок, гораздо более эффективный, чем выполнениеэто путем последовательного добавления строк в строки, что требует большого копирования за кулисами.

>>> mylist = ['x', 3, 'b']
>>> m = map(str, mylist)
>>> m
['x', '3', 'b']
>>> j = ', '.join(m)
>>> j
'x, 3, b'
1 голос
/ 14 декабря 2017

Использование .format для форматирования строки,

mylist = ['x', 3, 'b']
print("[{0}]".format(', '.join(map(str, mylist))))

Вывод:

[x, 3, b]

Пояснение:

  1. map используется для сопоставления каждого элемента списка с типом string.
  2. Элементы объединяются в строку с , какразделитель.
  3. Мы используем [ и ] в операторе печати, чтобы показать скобки списка.

Ссылка: .format для форматирования строки PEP-3101

0 голосов
/ 09 апреля 2018

Это другой способ ... может быть, немного более трудоемкий ...

mylist = ['x', 3, 'b']
print('[', end='')
print(*myList, sep=', ', end='')
print(']')

Вы удалите ´ \ n´, и таким образом вы можете объединить строки.

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