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.

Jawaban:


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

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


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.


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'

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.


18

Ada dua jawaban, Pertama menggunakan pengaturan 'sep'

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

Yang lainnya di bawah

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


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]

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

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


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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.