Đây có thể là một câu hỏi ngớ ngẩn, nhưng nhìn vào the mapping of operators to functions Tôi nhận thấy rằng không có hàm nào để biểu thị toán tử not in
. Lúc đầu, tôi nghĩ rằng điều này có lẽ là do thông dịch viên chỉ cần biên tập lại là not x in y
, nhưng có một chức năng cho is not
mà có vẻ như nó sẽ hoạt động chính xác giống như not in
. Tôi có thiếu cái gì đó, hay liệu toán tử đó thực sự không tồn tại?toán tử python, không có toán tử nào cho "not in"
Dưới đây là một ví dụ thực sự ngu ngốc, nơi bạn có thể muốn điều này:
def compare_iter(a,b,func):
return [func(aa,bb) for aa,bb in zip(a,b)]
my_compare=compare_iter(xx,yy,lambda x,y:x not in y) #lambda -- yuck
my_compare=map(operator.not_,compare_iter(xx,yy,operator.contains) #extra map? grr...
#it would be nice to do: my_compare=compare_iter(xx,yy,operator.not_contains)
Dĩ nhiên tôi có thể viết chức năng riêng của tôi cho điều này, nhưng sau đó bạn phải trả giá trong hiệu quả trong khi các mô-đun điều hành có thể đẩy mã này ra của python và do đó thực thi nhanh hơn.
Thật vậy, không thể 'a không phải là b' đơn giản được sắp xếp lại thành' không a là b'? – JAB
Có tình huống mà kiểm tra 'không in' có khả năng có thể được thực hiện nhanh hơn kiểm tra 'in'? –
@PaulManta nghi ngờ, vì 'không in' được định nghĩa là tìm kiếm toàn diện. –