Роздрукувати список без дужок в одному рядку


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))

Це, як це звучить, просто бере всі елементи списку і приєднується до них ', '.


9
Якщо деякі елементи в namesне є рядками, використовуйте print(', '.join(map(str,name)))замість цього.
Анонім

78

Ось простий.

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

зірка розпаковує список і повертає кожен елемент у списку.


8
В python 2.7.6, Це a SyntaxError: invalid syntax.
Фредрік Гаус

1
@FredrickGauss, якщо ви додасте, from __future__ import print_functionвін також буде працювати в python 2.
Ентоні Соттіл

1
Це правильна відповідь, оскільки це також працює з не рядками.
otocan

41

Загальне рішення, працює над масивами non-string:

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

9
Це не відповідає заявленій вимозі. Зверніть увагу на приклад ОП, що показує отримані назви без лапок.
Джон Y

1
@SteveBennett, чи можете ви пояснити, нарізавши [1: -1] у своїй відповіді. Я тільки почав вивчати пітон. Дякую.
Чаран

3
str(names)створює подібний рядок ['Sam', 'Peter'...'Ann']. Ми не хочемо квадратних дужок, отже, фрагмент від 2-го символу до другого останнього символу.
Стів Беннетт

22

Якщо вхідний масив типу Integer, вам потрібно спочатку перетворити масив у масив типу string, а потім скористатися 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

Є два відповіді. Перший - скористатися налаштуванням "sep"

>>> 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.