2009-09-02 40 views

Trả lời

16
x, y = x + 3 * y, 4 * x + 1 * y 

là tương đương với:

x = x + 3 * y 
y = 4 * x + 1 * y 

TRỪ mà nó sử dụng các giá trị ban đầu cho x và y trong cả hai tính toán - vì các giá trị mới cho x và y không được gán cho đến khi cả hai tính toán hoàn tất.

Hình thức chung là:

x,y = a,b 

nơi a và b là những biểu hiện các giá trị trong đó được gán cho x và y tương ứng. Bạn thực sự có thể gán bất kỳ tuple (tập hợp các giá trị bằng dấu phẩy) cho bất kỳ tuple của các biến có cùng kích thước - ví dụ,

x,y,z = a,b,c 

cũng sẽ làm việc, nhưng

w,x,y,z = a,b,c 

sẽ không phải vì số lượng giá trị trong tuple bên phải không khớp với số lượng biến trong tuple bên trái.

+4

tôi nghĩ rằng biến tạm thời sẽ làm tăng thêm sự rõ ràng. hy vọng bạn không quan tâm – hop

+4

Tôi thực sự nghĩ rằng giải thích nó với một nhấn mạnh "EXCEPT" ổ đĩa nhà điểm rõ ràng hơn, vì vậy tôi hoàn nguyên sự thay đổi. Cảm ơn anyways cho những nỗ lực cải tiến, tôi chỉ xảy ra được một tâm trí khác nhau về vấn đề này. :) – Amber

+0

Tạo cảm giác hoàn hảo. Thấy nó được bọc trong ngoặc đơn khiến nó hoàn toàn rõ ràng. Rất dễ dàng để đọc nó nhanh chóng và bỏ lỡ chi tiết nhỏ. Cảm ơn! –

12

Đó là một bài tập cho một số tuple, còn được gọi là giải nén chuỗi . Có lẽ đó là rõ ràng hơn khi bạn thêm dấu ngoặc xung quanh các bộ:

(x, y) = (x + 3 * y, 4 * x + 1 * y) 

Giá trị x + 3 * y được gán cho x và giá trị 4 * x + 1 * y được gán cho y.

Nó tương đương với điều này:

x_new = x + 3 * y 
y_new = 4 * x + 1 * y 
x = x_new 
y = y_new 
+7

Có lẽ còn rõ ràng hơn nếu bạn nhóm các dấu ngoặc đơn khác nhau: 'x, y = (x + 3 * y), (4 * x + 1 * y)'. Dấu phẩy có thể dễ dàng bỏ lỡ trong đó. –

+0

Ah, vâng, dấu ngoặc đơn đã làm cho nó rõ ràng - đôi mắt không thể nhìn thấy nó trước khi [tát trán] ... –

0

Tôi cũng vừa mới thấy điều này được gọi là "nhiệm vụ đồng thời", mà dường như nắm bắt được tinh thần của một số các câu trả lời.

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