2013-03-24 46 views

Trả lời

21

Bạn có thể giải nén các tuple trở thành một số biến giả:

_, keep_this, _ = f() 

Nó không phải là _, chỉ cần một cái gì đó rõ ràng là không sử dụng.

(Không sử dụng _ như một tên giả trong thông dịch viên tương tác, có nó được sử dụng để giữ kết quả cuối cùng.)

 

Ngoài ra, chỉ số các tuple trả về:

keep_this = f()[1] 
+1

đánh bại tôi vào nó bằng một vài giây! Darn! – feralin

+0

Tôi không thể tìm thấy bất kỳ tài liệu nào cho các biến giả. Có giúp gì không? – Cupitor

+1

@Naji về cơ bản, mã nào được gán cho ba phần của bộ tuple thành ba biến. Một dấu gạch dưới đơn là một tên biến hợp lệ và nó có thể được gán nhiều lần trong một phép gán destructuring. Vì vậy, khi nhiệm vụ đó hoàn tất, bạn sẽ có hai biến: keep_this, bằng giá trị trung bình trong bộ tuple và _, mà (nếu tôi đúng) bằng giá trị cuối cùng trong bộ dữ liệu. Bạn nên tra cứu nhiệm vụ phá hoại để tìm hiểu thêm. – feralin

1

Điều bạn đang làm với đường dây return a,b,c đang tạo một tuple và sau đó trả lại từ chức năng. Vì vậy, bạn có thể sử dụng deconstruction tuple để chỉ nhận được các giá trị bạn muốn từ kết quả. Ví dụ:

def f(x): 
    return x, x + 1, x + 2 
_, b, _ = f(0) 
print(b) # prints "1" 
+0

Là một câu hỏi phụ, tại sao mã tất cả trên một dòng? Tôi đã nhập nó vào một vài dòng ... – feralin

+0

Bạn bằng cách nào đó đã đặt một ký tự [SOH] (http://en.wikipedia.org/wiki/Start-of-Header#SOH) (0x01, CTRL-A) trong đó . –

+0

Tôi không chắc chắn cách tôi quản lý để làm điều đó! – feralin

3
def f(): 
    return 1,2,3 

đây, f() trả về một tuple (1,2,3) để bạn có thể làm điều gì đó như thế này:

a = f()[0] 
print a 
1 

a = f()[1] 
print a 
2 

a = f()[2] 
print a 
3 
Các vấn đề liên quan