2012-06-24 3 views
65

У меня есть список в 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 

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

ответ

107
print ', '.join(names) 

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

+1

>>> имена = [ "Сэм", "Питер", "Джеймс" , "Julian", "Ann"] >>> print ','.join (names) SyntaxError: недействительный синтаксис не работает «FatalError» – Isuru

+10

@IsuruMalakaSamarasinha Если это python 3, то, естественно, вам нужно будет вызвать функцию print * * (это ключевое слово в Python 2), то есть ' print (',' .join (names)) '. – FatalError

+0

как это сделать со словарем? –

8

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

", ".join(names) 
+0

Он завершает результат в кавычки. –

24

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

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

Существует, по-видимому, более чем один способ сделать это. – Max

+8

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

+0

Хорошая точка. (...) –

3

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

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

OP говорит, что он должен быть в одном ряду. – Ali

23

Вот простой.

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

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

+5

В 'python 2.7.6', это синтаксис' SyntaxError: invalid syntax'. –

+1

Это не помещает запятую между элементами. –

+4

Просто добавьте дополнительный параметр sep: print (* names, sep = ',') –

0

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

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(", ") 

Выход:

Sam, Peter, James, Julian, Ann

10

Если массив вход 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 
>>> 

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

+0

как это сделать со словарем –

6

Есть два ответа, первый является использование 'Сентябрь' установка

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

Другим ниже

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

Это самое зрелое решение. –

Смежные вопросы