Câu hỏi ngu ngốc phía trước: Tôi muốn một cách thành ngữ để tìm phần tử đầu tiên trong danh sách khớp với vị từ.tìm phần tử đầu tiên trong một chuỗi khớp với vị từ
Mã hiện nay là khá xấu xí:
[x for x in seq if predicate(x)][0]
Tôi đã suy nghĩ về việc thay đổi nó để:
from itertools import dropwhile
dropwhile(lambda x: not predicate(x), seq).next()
Nhưng phải có một cái gì đó tao nhã hơn ... Và nó sẽ được tốt đẹp nếu nó trả về giá trị None
thay vì tăng ngoại lệ nếu không tìm thấy kết quả phù hợp.
Tôi biết tôi chỉ có thể xác định một chức năng như:
def get_first(predicate, seq):
for i in seq:
if predicate(i): return i
return None
Nhưng nó là khá nhạt để bắt đầu điền mã với chức năng tiện ích như thế này (và những người có thể sẽ không nhận thấy rằng họ đã có, vì vậy chúng có xu hướng được lặp đi lặp lại theo thời gian) nếu có các bản dựng sẵn được cung cấp giống nhau.
Đây không phải là một câu hỏi ngu ngốc, và @ j-f-sebastian: đây không phải là một bản sao. Câu hỏi này đặc biệt về việc trả về một đối tượng và trả về 'Không có' thay vì ném một ngoại lệ. Nó cũng về sự thanh lịch. Câu hỏi còn lại là câu hỏi n00b và không hỏi những điều này, ít nhất là không rõ ràng lắm. –
Ngoài việc được hỏi muộn hơn "[chức năng tìm chuỗi python] (https://stackoverflow.com/questions/6039425/python-sequence-find-function)", câu hỏi này có tiêu đề ** tốt hơn **. – Wolf