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

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

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

Isuru
источник

Ответы:

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))
lyerox
источник
10

Это то, что вам нужно

", ".join(names)
user278064
источник
1
Оборачивает результат в кавычки.
Фредрик Гаусс
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 ()

ppmakeitcount
источник
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)

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

Мартин
источник