2016-02-06 12 views
6

một tuple là một danh sách bằng dấu phẩy của các giá trịTại sao các tuples được đính kèm trong dấu ngoặc đơn?

nên cú pháp hợp lệ để khai báo một tuple là:

tup = 'a', 'b', 'c', 'd' 

Nhưng những gì tôi thường thấy là một bản tuyên bố như thế này:

tup = ('a', 'b', 'c', 'd') 

Lợi ích của việc đưa các bộ dữ liệu vào dấu ngoặc đơn là gì?

+5

dễ đọc, cho người mới bắt đầu. –

+2

Có người nổi tiếng đã từng nói" * Đôi khi một dấu ngoặc đơn chỉ là dấu ngoặc đơn. * "Dấu phẩy làm cho bộ dữ liệu, dấu ngoặc đơn chỉ làm những gì chúng luôn làm. – uhoh

Trả lời

4

Các dấu ngoặc đơn chỉ ngoặc - họ làm việc bằng cách thay đổi độ ưu tiên. Ngoại lệ duy nhất là nếu không có gì được kèm theo (tức là ()), trong trường hợp này nó sẽ tạo ra một bộ trống.

Lý do người ta sử dụng dấu ngoặc đơn là nó sẽ dẫn đến một ký hiệu khá nhất quán. Bạn có thể viết tuple trống và bất kỳ tuple khác theo cách đó.

Lý do khác là người ta thường muốn có chữ cái để có quyền ưu tiên cao hơn các hoạt động khác. Ví dụ: thêm hai bộ dữ liệu sẽ được viết (1,2)+(3,4) (nếu bạn bỏ qua dấu ngoặc đơn ở đây, bạn sẽ nhận được 1,2+3,4 có nghĩa là thêm 2 và 3 trước rồi tạo thành bộ tuple - kết quả là 1,5,4). Tình huống tương tự là khi bạn muốn chuyển một bộ dữ liệu tới hàm f(1,2) có nghĩa là gửi các đối số 1 và 2 trong khi f((1,2)) có nghĩa là gửi bộ tảo (1,2). Tuy nhiên, một cách khác là nếu bạn muốn bao gồm một bộ tuple bên trong một tuple ((1,2),(3,4)(1,2,3,4) là hai thứ khác nhau.

10

Từ Python docs:

... để các bộ lồng nhau được giải thích một cách chính xác. Tuple có thể là đầu vào có hoặc không có dấu ngoặc đơn xung quanh, mặc dù thường là dấu ngoặc đơn là cần thiết (nếu tuple là một phần của biểu thức lớn hơn ).

Ví dụ về các bộ lồng nhau:

tuple = ('a', ('b', 'c'), 'd') 
1

Đó là những câu trả lời hay! Dưới đây là chỉ là một ví dụ bổ sung của bản ghi trong hành động (đóng gói/giải nén):

Nếu bạn làm điều này

x, y = y, x 

những gì đang xảy ra là:

tuple_1 = (y, x) 
(x, y) = tuple_1 

mà là giống như:

tuple_1 = (y, x) 
x = tuple_1[0] 
y = tuple_1[1] 

Trong tất cả các trường hợp này dấu ngoặc đơn không làm gì cả với python. Nhưng chúng hữu ích nếu bạn muốn nói với ai đó đang đọc kịch bản "này! Tôi đang tạo một bộ dữ liệu ở đây! Nếu bạn không thấy dấu phẩy, tôi sẽ thêm các dấu ngoặc đơn này để bắt mắt bạn! "

Tất nhiên câu trả lời về các tuple lồng nhau là chính xác. Nếu bạn muốn đặt một tuple bên trong một cái gì đó giống như một tuple hoặc danh sách ...

A = x, (x, y) # same as (x, (x, y)) 
B = [x, (x, y)] 
+0

Cảm ơn bạn đã chỉnh sửa nhưng tôi đã quay lại. Nó là ok và không bình thường khi gọi kịch bản python chỉ là "python", và nhiều người cho rằng thuật ngữ "script" tốt hơn "code" khi áp dụng cho python Và tôi nghĩ rằng tôi đã thấy nhiều ví dụ về những người đóng góp danh tiếng cao thêm một vài từ tín dụng cho các câu trả lời khác trước khi thêm đóng góp của họ làm câu trả lời bổ sung. Khi có nhiều câu trả lời, những dấu hiệu này có thể giúp hướng dẫn người đọc đến câu hỏi. Họ chắc chắn đã giúp tôi. – uhoh

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