str.find()
luôn trả về -1
nếu không tìm thấy. Tôi có thể viết một biểu thức thay vì str.find()
và return None
nếu không tìm thấy?Biểu thức đánh giá thành Không khi không tìm thấy chất nền
9
A
Trả lời
3
Nếu tôi Tóm lại, bạn muốn một cái gì đó mà:
- là một biểu
- đánh giá đến
None
khi không tìm thấy - đánh giá với chỉ số khi tìm thấy
- Không sử dụng một ternary (để Python 2.4 có thể xử lý nó)
Giải pháp duy nhất tôi có thể đưa ra mà đáp ứng mọi yêu cầu là thế này điều kỳ lạ:
(lambda x: x and x - 1)((str.find(substr) + 1) or None)
Ví dụ:
>>> (lambda x: x and x - 1)(('abcd'.find('b') + 1) or None)
1
>>> (lambda x: x and x - 1)(('abcd'.find('_') + 1) or None)
>>>
Tôi không cài đặt Python 2.4 để kiểm tra, vì vậy tôi chỉ có thể hy vọng nó hoạt động.
+1
lambda thực sự hoạt động! – ThunderEX
5
None if str.find() < 0 else str.find()
và nếu trùng lắp mã phiền bạn (và nó nên):
index = str.find()
None if index < 0 else index
Điều kiện ternary là added trong 2.5. Vì vậy, nếu bạn có một phiên bản cũ của Python bạn có thể làm điều này thay vì:
def my_find(str, sub_str)
index = str.find(sub_str)
if index < 0:
return None
else:
return index
7
Bạn có nghĩa là một cái gì đó như thế này?
def find2(str, substr):
result = str.find(substr)
return result if result != -1 else None
Trong Python 2.4, thay đổi dòng cuối cùng để
if result != -1:
return result
else:
return None
Các vấn đề liên quan
- 1. hiện python biểu thức nhân đánh giá nhanh hơn nếu tìm thấy một số không?
- 2. Đánh giá các biểu thức đã đặt
- 3. Đánh giá biểu thức toán
- 4. R nhận được chất nền và biểu thức chính quy?
- 5. Đánh giá biểu thức C
- 6. JSP: Biểu thức EL không được đánh giá
- 7. Trình tự đánh giá các biểu thức
- 8. Tìm kiếm một bộ đánh giá biểu thức
- 9. Đánh giá biểu thức biểu tượng
- 10. "Biểu thức phải đánh giá thành bộ nút".
- 11. Javascript nếu đánh giá biểu thức
- 12. Xcode đánh giá các biểu thức trong khi gỡ lỗi
- 13. Lỗi đánh giá biểu thức XPath
- 14. Thứ tự đánh giá biểu thức mới?
- 15. Knockout không đánh giá biểu thức khi sử dụng chỉ mục $ trong một ràng buộc
- 16. Cây đánh giá biểu thức trong Haskell
- 17. Đánh giá biểu thức có điều kiện
- 18. Nội tuyến để đánh giá biểu thức
- 19. Gỡ lỗi khi tạm dừng và 'không thể đánh giá biểu thức'
- 20. Khi không sử dụng biểu thức lambda
- 21. Javac "không thể tìm thấy biểu tượng"
- 22. Biểu thức SQLServer CASE - đánh giá ngắn mạch?
- 23. phương thức init() v không tìm thấy
- 24. C# biểu thức lambda và đánh giá lười biếng
- 25. Biểu tượng tăng không tìm thấy
- 26. Cách đánh giá biểu thức người dùng trong hộp cát
- 27. Không thể tìm thấy phương thức CreateQuery()
- 28. Không thể tìm thấy phương thức InsertOnSubmit()
- 29. Tôi không thể tìm thấy phương thức "Bao gồm" với biểu thức lambda trong khung Entity?
- 30. Có cách nào để đánh giá số lần biểu thức chính quy Perl đã khớp không?
(Điều gì) Bạn đã thử chưa? –