Cetak daftar tanpa tanda kurung dalam satu baris

162

Saya punya daftar di Python misalnya

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

Saya ingin mencetak array dalam satu baris tanpa normal "[]

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

Akan memberikan output sebagai;

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

Itu bukan format yang saya inginkan, tetapi saya ingin formatnya seperti ini;

Sam, Peter, James, Julian, Ann

Catatan: Itu harus dalam satu baris.

Isuru
sumber

Jawaban:

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

Ini, seperti kedengarannya, hanya mengambil semua elemen dari daftar dan bergabung dengan mereka ', '.

Kesalahan fatal
sumber
9
Jika beberapa elemen di namesbukan string, gunakan print(', '.join(map(str,name)))saja.
Anonim
78

Ini yang sederhana.

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

bintang membongkar daftar dan mengembalikan setiap elemen dalam daftar.

Jianru Shi
sumber
8
Dalam python 2.7.6, Ini adalah SyntaxError: invalid syntax.
Fredrick Gauss
1
@ FredrickGauss jika Anda menambahkannya from __future__ import print_functionakan bekerja di python 2 juga.
Anthony Sottile
1
Ini adalah jawaban yang benar karena juga berfungsi dengan non-string.
otocan
41

Solusi umum, bekerja pada array non-string:

>>> print str(names)[1:-1]
'Sam', 'Peter', 'James', 'Julian', 'Ann'
Steve Bennett
sumber
9
Ini tidak memenuhi persyaratan yang dinyatakan. Perhatikan contoh OP yang menunjukkan nama yang dihasilkan tanpa tanda kutip.
John Y
1
@SteveBennett bisa tolong jelaskan irisan [1: -1] dalam jawaban Anda. Saya baru mulai belajar python. Terima kasih.
Charan
3
str(names)menghasilkan string seperti ['Sam', 'Peter'...'Ann']. Kami tidak ingin tanda kurung siku, karena itu potong dari karakter 2 ke karakter terakhir kedua.
Steve Bennett
22

Jika array input adalah tipe Integer maka Anda harus terlebih dahulu mengubah array menjadi array tipe string dan kemudian menggunakan joinmetode untuk bergabung dengan ,atau ruang apa pun yang Anda inginkan. misalnya:

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

Penggunaan langsung dari join yang akan bergabung dengan integer dan string akan menampilkan kesalahan seperti yang ditunjukkan di atas.

krishna Prasad
sumber
18

Ada dua jawaban, Pertama menggunakan pengaturan 'sep'

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

Yang lainnya di bawah

>>> print(', '.join(names))
Lerox
sumber
10

Ini yang kamu butuhkan

", ".join(names)
pengguna278064
sumber
1
Itu membungkus hasilnya dengan tanda kutip.
Fredrick Gauss
7

','.join(list)hanya akan berfungsi jika semua item dalam daftar adalah string. Jika Anda ingin mengonversi daftar angka menjadi string yang dipisah koma. seperti a = [1, 2, 3, 4]ke dalam '1,2,3,4'maka Anda bisa

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

atau

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

meskipun ini tidak akan menghapus daftar bersarang.

Untuk mengubahnya kembali ke daftar

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

Anda perlu mengulang daftar dan menggunakannya end=" "untuk menyimpannya di satu baris

names = ["Sam", "Peter", "James", "Julian", "Ann"]
    index=0
    for name in names:
        print(names[index], end=", ")
        index += 1
Prajurit Tahu
sumber
OP mengatakan itu harus dalam satu baris.
Ali
2

cetak (* nama)

ini akan bekerja di python 3 jika Anda ingin mereka dicetak sebagai spasi terpisah. Jika Anda memerlukan koma atau apa pun di antaranya, lanjutkan dengan .join () solusi

ppmakeitcount
sumber
1

Saya tidak tahu apakah ini efisien seperti yang lain tetapi logika sederhana selalu berfungsi:

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

Keluaran:

Sam, Peter, James, Julian, Ann

Fredrick Gauss
sumber
0

Fungsi berikut akan mengambil dalam daftar dan mengembalikan serangkaian item daftar. Ini kemudian dapat digunakan untuk tujuan penebangan atau pencetakan.

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
Rajesh Thennan
sumber