2012-03-02 29 views
26

Nếu tôi có một tuple như (1,2,3,4) và tôi muốn gán 1 và 3 để biến a và b tôi rõ ràng có thể nóiBỏ qua một phần của một tuple python

myTuple = (1,2,3) 
a = my_tuple[0] 
b = myTuple[2] 

Hoặc một cái gì đó giống như

(a,_,b,_) = myTuple 

Có cách nào tôi có thể giải nén các giá trị, nhưng bỏ qua một hoặc nhiều giá trị của chúng?

+2

'a, _, b = myTuple' là một thành ngữ khá phổ biến. Thành thật mà nói, tôi không thấy nhiều sai lầm với nó. – NPE

+0

Có vấn đề gì khi có '_ == 2'? Không ai sẽ sử dụng '_' sau trong mã. –

+1

Điều gì sẽ xảy ra nếu tôi muốn bỏ qua hai phần của bộ dữ liệu? Tôi sẽ cập nhật câu hỏi –

Trả lời

10

Giải pháp của bạn là tốt theo ý kiến ​​của tôi. Nếu bạn thực sự gặp vấn đề khi chỉ định _ thì bạn có thể xác định danh sách các chỉ mục và thực hiện:

a = (1, 2, 3, 4, 5) 
idxs = [0, 3, 4] 
a1, b1, c1 = (a[i] for i in idxs) 
35

Cá nhân tôi sẽ viết:

a, _, b = myTuple 

Đây là một thành ngữ khá phổ biến, vì vậy nó hiểu rộng rãi. Tôi thấy rõ ràng cú pháp của cú pháp.

+4

Tôi muốn lưu ý rằng trong trình thông dịch python '_' được gán cho kết quả của biểu thức cuối cùng (vì vậy nếu bạn gõ' 'hi'' và nhấn enter thì '_ là' hi'') cho đến khi bạn làm điều gì đó như thế này, trong đó bạn gán một giá trị cho nó, sau đó nó sẽ không bao giờ hoạt động như trước đây. – 2rs2ts

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