Tôi có một danh sách các đối tượng và tôi muốn tìm đối tượng đầu tiên mà phương thức đã cho trả về true cho một số giá trị đầu vào. Đây là tương đối dễ dàng để làm bằng Python:Giá trị mặc định cho phần tử tiếp theo trong trình lặp Python nếu trình vòng lặp trống?
pattern = next(p for p in pattern_list if p.method(input))
Tuy nhiên, trong ứng dụng của tôi nó là phổ biến mà không có như vậy p
mà p.method(input)
là đúng, và vì vậy đây sẽ nâng cao một ngoại lệ StopIteration
. Có một cách thành ngữ để xử lý này mà không cần viết một khối try/catch? Cụ thể, có vẻ như sẽ sạch hơn khi xử lý trường hợp đó với điều kiện là if pattern is not None
có điều kiện, vì vậy tôi tự hỏi liệu có cách nào để mở rộng định nghĩa của mình là pattern
để cung cấp giá trị None
khi trình vòng lặp trống không - hoặc nếu có một cách Pythonic hơn để xử lý vấn đề tổng thể!
Tốt! Đó là chính xác những gì tôi đã hy vọng tồn tại. Cảm ơn bạn. –