2012-06-24 31 views
65

Tôi có một danh sách bằng Python ví dụ:Danh sách in không có dấu ngoặc đơn trong một hàng duy nhất

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

Tôi muốn in mảng trong một dòng duy nhất mà không bình thường "[]

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

sẽ cung cấp cho các đầ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ó giống như thế này;

Sam, Peter, James, Julian, Ann 

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

Trả lời

107
print ', '.join(names) 

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

+1

>>> names = [ "Sam", "Peter", "James" , "Julian", "Ann"] >>> in ','.join (tên) Cú pháp Cú pháp: cú pháp không hợp lệ nó không hoạt động "FatalError" – Isuru

+10

@IsuruMalakaSamarasinha Nếu đây là python 3, thì bạn sẽ cần gọi hàm in * (nó là một từ khóa trong Python 2), tức là ' in (',' .join (tên)) '. – FatalError

+0

cách thực hiện điều này bằng từ điển? –

8

Đây là những gì bạn cần

", ".join(names) 
+0

Nó kết thúc tốt đẹp kết quả trong dấu ngoặc kép. –

24

giải pháp chung, hoạt động trên các mảng của không dây:

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

Có nhiều cách để làm điều đó, rõ ràng. – Max

+8

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

+0

Điểm tốt. (...) –

3

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

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

OP nói rằng nó phải nằm trong một hàng. – Ali

23

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

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

sao sẽ bỏ danh sách và trả về mọi phần tử trong danh sách.

+5

Trong 'python 2.7.6', đây là một cú pháp' Cú pháp Cú pháp: không hợp lệ'. –

+1

Điều này không đặt dấu phẩy giữa các phần tử. –

+4

Chỉ cần thêm tham số phụ sep: in (* tên, sep = ',') –

0

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

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

Output:

Sam, Peter, James, Julian, Ann

10

Nếu mảng đầu vào là Integer loại thì bạn cần phải mảng chuyển đổi đầu tiên thành chuỗi loại mảng và sau đó sử dụng phương pháp join để tham gia với , hoặc không gian bất cứ điều 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 
>>> 

Việc sử dụng tham gia trực tiếp sẽ tham gia số nguyên và chuỗi sẽ phát hiện lỗi như minh họa ở trên.

+0

cách thực hiện điều này bằng từ điển –

6

Có hai câu trả lời, đầu tiên là sử dụng 'Tháng chín' thiết

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

còn lại là dưới

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

Đây là giải pháp hoàn thiện nhất. –

Các vấn đề liên quan