Распечатать список без скобок в один ряд


162

У меня есть список в Python, например

names = ["Sam", "Peter", "James", "Julian", "Ann"]

Я хочу напечатать массив в одну строку без нормального "[]

names = ["Sam", "Peter", "James", "Julian", "Ann"]
print (names)

Выдаст вывод как;

["Sam", "Peter", "James", "Julian", "Ann"]

Это не тот формат, который я хочу, я хочу, чтобы он был таким;

Sam, Peter, James, Julian, Ann

Примечание: оно должно быть в одном ряду.

Ответы:


242
print(', '.join(names))

Это, как это звучит, просто берет все элементы списка и соединяет их с ', '.


10
Если некоторые элементы namesне являются строками, используйте print(', '.join(map(str,name)))вместо них.
Аноним

78

Вот простой.

names = ["Sam", "Peter", "James", "Julian", "Ann"]
print(*names, sep=", ")

звезда распаковывает список и возвращает каждый элемент в списке.


8
Во python 2.7.6, это SyntaxError: invalid syntax.
Фредрик Гаусс

1
@FredrickGauss, если вы добавите, from __future__ import print_functionэто будет работать и в Python 2.
Энтони Соттил

1
Это правильный ответ, так как он работает и с нестроковыми данными.
otocan

41

Общее решение, работает на массивах нестроковых:

>>> print str(names)[1:-1]
'Sam', 'Peter', 'James', 'Julian', 'Ann'

9
Это не соответствует заявленному требованию. Обратите внимание на пример OP, показывающий полученные имена без кавычек.
Джон Y

1
@SteveBennett, не могли бы вы объяснить нарезку [1: -1] в своем ответе. Я только начал изучать Python. Спасибо.
Чаран

3
str(names)генерирует строку как ['Sam', 'Peter'...'Ann']. Нам не нужны квадратные скобки, следовательно, срез со 2-го символа до второго последнего символа.
Стив Беннетт

22

Если входной массив имеет тип Integer, то вам нужно сначала преобразовать массив в массив строкового типа, а затем использовать joinметод для соединения ,или пробела, что вы хотите. например:

>>> arr = [1, 2, 4, 3]
>>> print(", " . join(arr))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected string, int found
>>> sarr = [str(a) for a in arr]
>>> print(", " . join(sarr))
1, 2, 4, 3
>>>

Прямое использование объединения, которое объединит целое число и строку, выдаст ошибку, как показано выше.


18

Есть два ответа, во-первых, использовать настройку «сеп»

>>> print(*names, sep = ', ')

Другой ниже

>>> print(', '.join(names))


7

','.join(list)будет работать, только если все элементы в списке являются строками. Если вы хотите преобразовать список чисел в строку через запятую. например, a = [1, 2, 3, 4]в '1,2,3,4'то время как вы можете

str(a)[1:-1] # '1, 2, 3, 4'

или

str(a).lstrip('[').rstrip(']') # '1, 2, 3, 4'

хотя это не удалит вложенный список.

Чтобы преобразовать его обратно в список

a = '1,2,3,4'
import ast
ast.literal_eval('['+a+']')
#[1, 2, 3, 4]

4

Вы должны пройтись по списку и использовать его, end=" "чтобы держать его на одной строке

names = ["Sam", "Peter", "James", "Julian", "Ann"]
    index=0
    for name in names:
        print(names[index], end=", ")
        index += 1

ОП говорит, что это должно быть в одном ряду.
Али

2

печать (* имена)

это будет работать в Python 3, если вы хотите, чтобы они были распечатаны как разделенные пробелами. Если вам нужна запятая или что-то еще между ними, воспользуйтесь решением .join ()


1

Я не знаю, насколько это эффективно, как другие, но простая логика всегда работает:

import sys
name = ["Sam", "Peter", "James", "Julian", "Ann"]
for i in range(0, len(names)):
    sys.stdout.write(names[i])
    if i != len(names)-1:
        sys.stdout.write(", ")

Вывод:

Сэм, Питер, Джеймс, Джулиан, Энн


0

Следующая функция будет принимать список и возвращать строку элементов списков. Это может быть использовано для регистрации или печати.

def listToString(inList):
    outString = ''
    if len(inList)==1:
        outString = outString+str(inList[0])
    if len(inList)>1:
        outString = outString+str(inList[0])
        for items in inList[1:]:
            outString = outString+', '+str(items)
    return outString

0

Для массива целочисленного типа нам нужно сначала изменить его на строковый тип, а затем использовать функцию соединения, чтобы получить чистый вывод без скобок.

    arr = [1, 2, 3, 4, 5]    
    print(', '.join(map(str, arr)))

ВЫХОД - 1, 2, 3, 4, 5

Для массива строкового типа нам нужно использовать функцию соединения напрямую, чтобы получить чистый вывод без скобок.

    arr = ["Ram", "Mohan", "Shyam", "Dilip", "Sohan"]
    print(', '.join(arr)

ВЫХОД - Рам, Мохан, Шьям, Дилип, Сохан

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.