2010-02-03 43 views
60

để bạn biết nếu Python hỗ trợ một số từ khóa hoặc biểu hiện giống như trong C++ để trở về giá trị dựa trên if điều kiện, tất cả trong cùng một dòng (C++ if bày tỏ với dấu hỏi ?)Toán tử điều kiện trong Python?

// C++ 
value = (a > 10 ? b : c) 
+4

Toán tử C++ được gọi là "toán tử điều kiện" hoặc "toán tử bậc ba". –

+1

Sao chép tất cả các mục sau: http://stackoverflow.com/search?q=%5Bpython%5D+ternary. Cụ thể, điều này: http://stackoverflow.com/questions/135303/how-can-i-closely-achieve-from-cc-in-python –

+0

có thể trùng lặp của [Python có một toán tử điều kiện bậc ba không?] (Http: //stackoverflow.com/questions/394809/does-python-have-a-ternary-conditional-operator) – ks1322

Trả lời

105

Từ Python 2.5 trở đi bạn có thể làm:

value = b if a > 10 else c 

Trước đây bạn sẽ phải làm một cái gì đó như sau, mặc dù ngữ nghĩa là không giống như tác dụng ngắn mạch bị mất:

value = [c, b][a > 10] 

Ngoài ra còn có một hack sử dụng 'và ... hoặc' nhưng tốt nhất là không sử dụng nó vì nó có hành vi không mong muốn trong một số trường hợp có thể dẫn đến khó tìm lỗi. Tôi thậm chí sẽ không viết hack ở đây vì tôi nghĩ tốt nhất là không nên sử dụng nó, nhưng bạn có thể đọc về nó trên Wikipedia nếu bạn muốn.

+5

Tôi đã luôn luôn tự hỏi những ký hiệu nào mà họ từ chối là "quá khó hiểu" để ủng hộ điều này. –

+0

Cảm ơn bạn đã dành thời gian! Thật tuyệt! –

+2

+1, Bạn có thể sử dụng loại 'if' này ngay cả với các biểu thức lambda! – Serge

-2

đơn giản là tốt nhất và hoạt động ở mọi phiên bản.

if a>10: 
     value="b" 
    else: 
     value="c" 
+0

Xin chào, cảm ơn thời gian của bạn! –

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