2012-10-05 59 views
6

Tôi đang sử dụng phiên bản Python 3.2.3. Tôi đang cố gắng in một danh sách các số trong một hàng, lệnh in dường như luôn in số một ở hàng.In danh sách các số trong python v.3

Ví dụ

numbers = [1, 2, 3, 4, 5]; 
for num in numbers: 
    print("\t ", num) 

đầu ra là:

1 

2 
... 

đầu ra yêu cầu là 1 2 3 4 5

tôi sẽ đánh giá cao sự giúp đỡ của bạn. P.s. Tôi đã tìm kiếm trên web ở đây và hầu hết các câu hỏi đều liên quan đến Python 2.7.

+0

Có một [python-3.x] (http: // tag stackoverflow.com/questions/tagged/python-3.x), có thể giúp bạn tìm kiếm. – Evert

Trả lời

10

Sử dụng đối số end chặn (hoặc thay thế) đầu ra EOL tự động:

print("\t ", num, end='') 

Hoặc, bạn nên có lẽ chỉ cần sử dụng:

print('\t'.join(map(str, [1, 2, 3, 4, 5]))) 
+0

Cảm ơn bạn Jon đã trả lời nhanh - Đã giải quyết được sự cố. – Sinan

+0

Có một cách thậm chí còn dễ dàng hơn khi in là một hàm: 'in (* số, sep = '\ t')' –

+2

@ThomasK Nhận xét của bạn thực sự là một câu trả lời rất hay, tại sao không trả lời? –

4

Bạn có thể sử dụng .join() tham gia cùng họ sử dụng các ký tự tab:

>>> numbers = [1, 2, 3, 4, 5] 
>>> print('\t'.join(map(str, numbers))) 
1 2 3 4 5 

map(str, numbers) giống hệt [str(n) for n in numbers].

+0

Cảm ơn bạn đã bình luận. Nó được đánh giá cao. – Sinan

+0

'bản đồ (str, số)' tương tự như '(str (n) cho n trong số)', không phải những gì bạn đã viết. –

2

Bạn có thể sử dụng sys.stdout.write() thay vì print(), mà sẽ gửi đầu ra của bạn tới luồng đầu ra ngay lập tức và không có dòng mới.

Điều này có nhược điểm là xấu xí và lợi thế của việc không lưu trữ toàn bộ chuỗi trong bộ nhớ cùng một lúc. (. Cách tiếp cận join sẽ sụp đổ máy tính của bạn nếu mảng của bạn là rất, rất lớn)

+0

Thay đổi "crash your computer" thành "crash your Python process". – Deestan

+0

Cảm ơn bạn đã bình luận, nó được đánh giá cao. – Sinan

7

Bên cạnh những câu trả lời khác, có một cách gọn gàng để làm điều đó tại in đó là một chức năng:

print(*numbers, sep='\t') 

Không giống như mã ban đầu của bạn, điều này sẽ không đặt một tab trước số đầu tiên. Nếu bạn muốn có thêm tab đó, cách dễ nhất là chỉ để đặt một mục trống trước các số, do đó, nó tạo ra một dấu tách tab phụ:

print('', *numbers, sep='\t') 
Các vấn đề liên quan