Danh sách in không có dấu ngoặc trong một hàng


162

Tôi có một danh sách bằng Python, vd

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

Tôi muốn in mảng trong một dòng mà không có thông thường "[]

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

Sẽ cho đầu ra như;

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

Đó không phải là định dạng tôi muốn thay vào đó tôi muốn nó phải như thế này;

Sam, Peter, James, Julian, Ann

Lưu ý: Nó phải ở trong một hàng duy nhất.

Câu trả lời:


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

Điều này, giống như âm thanh, chỉ cần lấy tất cả các yếu tố của danh sách và tham gia chúng với ', '.


9
Nếu một số thành phần trong nameschuỗi không có, print(', '.join(map(str,name)))thay vào đó hãy sử dụng .
Ẩn danh

78

Đây là một đơn giản.

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

ngôi sao giải nén danh sách và trả về mọi phần tử trong danh sách.


8
Trong python 2.7.6, Đây là một SyntaxError: invalid syntax.
Fredrick Gauss

1
@FredrickGauss nếu bạn thêm from __future__ import print_functionnó cũng sẽ hoạt động trong python 2.
Anthony Sottile

1
Đây là câu trả lời đúng vì nó cũng hoạt động với các chuỗi không.
otocan

41

Giải pháp chung, hoạt động trên các mảng không phải chuỗi:

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

9
Điều này không đáp ứng yêu cầu đã nêu. Lưu ý ví dụ của OP hiển thị tên kết quả mà không có dấu ngoặc kép.
John Y

1
@SteveBennett bạn có thể vui lòng giải thích việc cắt lát [1: -1] trong câu trả lời của bạn. Tôi mới bắt đầu học trăn. Cảm ơn bạn.
Charan

3
str(names)tạo ra một chuỗi như ['Sam', 'Peter'...'Ann']. Chúng tôi không muốn dấu ngoặc vuông, do đó cắt từ ký tự thứ 2 sang ký tự cuối cùng thứ hai.
Steve Bennett

22

Nếu mảng đầu vào là kiểu Integer thì trước tiên bạn cần chuyển mảng thành mảng kiểu chuỗi và sau đó sử dụng joinphương thức để nối với ,hoặc khoảng trắng bất cứ thứ gì bạn muốn. ví dụ:

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

Sử dụng trực tiếp phép nối sẽ nối số nguyên và chuỗi sẽ đưa ra lỗi như hiển thị ở trên.


18

Có hai câu trả lời, Đầu tiên là sử dụng cài đặt 'sep'

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

Cái khác ở dưới

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


7

','.join(list)sẽ chỉ hoạt động nếu tất cả các mục trong danh sách là chuỗi. Nếu bạn đang tìm cách chuyển đổi một danh sách các số thành một chuỗi được phân tách bằng dấu phẩy. chẳng hạn như a = [1, 2, 3, 4]vào '1,2,3,4'sau đó bạn có thể

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

hoặc là

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

mặc dù điều này sẽ không xóa bất kỳ danh sách lồng nhau.

Để chuyển đổi nó trở lại danh sách

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

4

Bạn cần lặp qua danh sách và sử dụng end=" "để giữ nó trên một dòng

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

OP nói rằng nó phải ở trong một hàng duy nhất.
Ali

2

in (* tên)

cái này sẽ hoạt động trong python 3 nếu bạn muốn chúng được in ra dưới dạng khoảng cách. Nếu bạn cần dấu phẩy hoặc bất cứ thứ gì khác ở giữa, hãy tiếp tục với giải pháp .join ()


1

Tôi không biết điều này có hiệu quả như những người khác không nhưng logic đơn giản luôn hoạt động:

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

Đầu ra:

Sam, Peter, James, Julian, Ann


0

Hàm sau sẽ lấy trong một danh sách và trả về một chuỗi các mục của danh sách. Điều này sau đó có thể được sử dụng cho mục đích đăng nhập hoặc in ấn.

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.