Tek bir satırda köşeli ayraç olmadan liste yazdır


162

Python'da bir listem var.

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

Dizi normal "[] olmadan tek bir satıra yazdırmak istiyorum

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

Çıkışı;

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

Bu istediğim biçim değil, bunun gibi olmasını istiyorum;

Sam, Peter, James, Julian, Ann

Not: Tek bir satırda olmalıdır.

Yanıtlar:


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

Bu, göründüğü gibi, listenin tüm öğelerini alır ve bunlarla birleştirir ', '.


9
Bazı öğeler namesdize değilse, print(', '.join(map(str,name)))bunun yerine kullanın.
İsimsiz

78

İşte basit bir tane.

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

yıldız listeyi açar ve listedeki her öğeyi döndürür.


8
Içinde python 2.7.6, Bu bir SyntaxError: invalid syntax.
Fredrick Gauss

1
@FredrickGauss eklerseniz from __future__ import print_functionpython 2'de de çalışır.
Anthony Sottile

1
Dizge olmayanlarla da çalıştığı için doğru cevap budur.
otocan

41

Genel çözüm, dizgisiz diziler üzerinde çalışır:

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

9
Bu belirtilen gereksinimi karşılamıyor. OP'nin ortaya çıkan adları tırnak işaretleri olmadan gösteren örneğine dikkat edin.
John Y

1
@SteveBennett cevabınızdaki dilimleme [1: -1] 'i açıklayabilir misiniz? Python öğrenmeye başladım. Teşekkür ederim.
Charan

3
str(names)gibi bir dize oluşturur ['Sam', 'Peter'...'Ann']. Köşeli parantez istemiyoruz, bu nedenle 2. karakterden ikinci son karaktere kadar dilim.
Steve Bennett

22

Giriş dizisi Tamsayı tipiyse , önce diziyi dize türü dizisine dönüştürmeniz ve ardından istediğiniz joinyöntemle ,veya boşlukla katılma yöntemini kullanmanız gerekir . Örneğin:

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

Tamsayıyı ve dizeyi birleştirecek birleştirme işleminin doğrudan kullanılması, yukarıdaki gibi hata verir.


18

İki cevap var, Birincisi 'sep' ayarını kullanmak

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

Diğeri aşağıda

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


7

','.join(list)yalnızca listedeki tüm öğeler dizgiyse çalışır. Bir sayı listesini virgülle ayrılmış dizeye dönüştürmek istiyorsanız. gibi a = [1, 2, 3, 4]içine '1,2,3,4'o zaman ya

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

veya

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

ancak bu iç içe listelerin hiçbirini kaldırmaz.

Listeye geri dönüştürmek için

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

4

Listede dolaşmanız ve end=" "bir satırda tutmak için kullanmanız gerekir

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

OP tek satırda olması gerektiğini söylüyor.
Ali

2

yazdırmak (* isimleri)

bu, boşlukla ayrılmış olarak yazdırılmalarını istiyorsanız, python 3'te çalışacaktır. Virgül veya aradaki başka bir şeye ihtiyacınız varsa .join () çözümü ile devam edin


1

Bu diğerleri gibi verimli olup olmadığını bilmiyorum ama basit mantık her zaman çalışır:

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

Çıktı:

Sam, Peter, James, Julian, Ann


0

Aşağıdaki işlev bir listeye alınır ve listelerin öğelerinin bir dizesini döndürür. Bu daha sonra günlük tutma veya yazdırma amacıyla kullanılabilir.

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

Tamsayı türü dizisi için, önce dizgi türüne değiştirmemiz ve parantez olmadan temiz çıktı elde etmek için join işlevini kullanmamız gerekir.

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

ÇIKTI - 1, 2, 3, 4, 5

Dize türü dizisi için, parantez olmadan temiz çıktı almak için birleştirme işlevini doğrudan kullanmamız gerekir.

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

ÇIKTI - Ram, Mohan, Shyam, Dilip, Sohan

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.