Một lớp có thể xác định cách thức toán tử in
hoạt động trên các trường hợp của lớp đó bằng cách xác định phương thức __contains__
.
Tài liệu mô hình dữ liệu Python cho biết:
Đối với các đối tượng không xác định
__contains__[]
, thử nghiệm thành viên lần đầu tiên thử lặp lại thông qua__iter__[]
, sau đó giao thức lặp trình tự cũ qua__getitem__[]
, xem phần này trong tham chiếu ngôn ngữ.
Mục 6.10.2, "Các hoạt động kiểm tra thành viên", của tham chiếu ngôn ngữ Python có điều này để nói:
Các nhà khai thác
in
và#in operator working list1= [1,2,3,4,5] string1= "My name is AskPython" tuple1=[11,22,33,44] print[5 in list1] #True print["is" in string1] #True print[88 in tuple1] #False0 Kiểm tra thành viên.#in operator working list1= [1,2,3,4,5] string1= "My name is AskPython" tuple1=[11,22,33,44] print[5 in list1] #True print["is" in string1] #True print[88 in tuple1] #False1 đánh giá là#in operator working list1= [1,2,3,4,5] string1= "My name is AskPython" tuple1=[11,22,33,44] print[5 in list1] #True print["is" in string1] #True print[88 in tuple1] #False2 nếu X là thành viên của S và#in operator working list1= [1,2,3,4,5] string1= "My name is AskPython" tuple1=[11,22,33,44] print[5 in list1] #True print["is" in string1] #True print[88 in tuple1] #False3 nếu không.#in operator working list1= [1,2,3,4,5] string1= "My name is AskPython" tuple1=[11,22,33,44] print[5 in list1] #True print["is" in string1] #True print[88 in tuple1] #False4 Trả về sự phủ định của#in operator working list1= [1,2,3,4,5] string1= "My name is AskPython" tuple1=[11,22,33,44] print[5 in list1] #True print["is" in string1] #True print[88 in tuple1] #False1. Tất cả các chuỗi tích hợp và các loại đặt hỗ trợ điều này cũng như từ điển, trong đóin
kiểm tra xem từ điển có khóa nhất định hay không. Đối với các loại container như Danh sách, Tuple, Set, Frozenset, Dict hoặc Collections.Deque, biểu thức#in operator working list1= [1,2,3,4,5] string1= "My name is AskPython" tuple1=[11,22,33,44] print[5 in list1] #True print["is" in string1] #True print[88 in tuple1] #False7 tương đương với#in operator working list1= [1,2,3,4,5] string1= "My name is AskPython" tuple1=[11,22,33,44] print[5 in list1] #True print["is" in string1] #True print[88 in tuple1] #False8.Đối với các loại chuỗi và byte,
#in operator working list1= [1,2,3,4,5] string1= "My name is AskPython" tuple1=[11,22,33,44] print[5 in list1] #True print["is" in string1] #True print[88 in tuple1] #False7 là#in operator working list1= [1,2,3,4,5] string1= "My name is AskPython" tuple1=[11,22,33,44] print[5 in list1] #True print["is" in string1] #True print[88 in tuple1] #False2 khi và chỉ khi x là một chuỗi con của y. Một thử nghiệm tương đương là#not in operator working list1= [1,2,3,4,5] string1= "My name is AskPython" tuple1=[11,22,33,44] print[5 not in list1] #False print["is" not in string1] #False print[88 not in tuple1] #True1. Các chuỗi trống luôn được coi là một chuỗi con của bất kỳ chuỗi nào khác, vì vậy#not in operator working list1= [1,2,3,4,5] string1= "My name is AskPython" tuple1=[11,22,33,44] print[5 not in list1] #False print["is" not in string1] #False print[88 not in tuple1] #True2 sẽ trả về#in operator working list1= [1,2,3,4,5] string1= "My name is AskPython" tuple1=[11,22,33,44] print[5 in list1] #True print["is" in string1] #True print[88 in tuple1] #False2.Đối với các lớp do người dùng xác định xác định phương thức
__contains__[]
,#in operator working list1= [1,2,3,4,5] string1= "My name is AskPython" tuple1=[11,22,33,44] print[5 in list1] #True print["is" in string1] #True print[88 in tuple1] #False7 trả về#in operator working list1= [1,2,3,4,5] string1= "My name is AskPython" tuple1=[11,22,33,44] print[5 in list1] #True print["is" in string1] #True print[88 in tuple1] #False2 nếu#not in operator working list1= [1,2,3,4,5] string1= "My name is AskPython" tuple1=[11,22,33,44] print[5 not in list1] #False print["is" not in string1] #False print[88 not in tuple1] #True7 trả về giá trị thực và#in operator working list1= [1,2,3,4,5] string1= "My name is AskPython" tuple1=[11,22,33,44] print[5 in list1] #True print["is" in string1] #True print[88 in tuple1] #False3 khác.Đối với các lớp do người dùng xác định không xác định
__contains__[]
nhưng xác định__iter__[]
,#in operator working list1= [1,2,3,4,5] string1= "My name is AskPython" tuple1=[11,22,33,44] print[5 in list1] #True print["is" in string1] #True print[88 in tuple1] #False7 là#in operator working list1= [1,2,3,4,5] string1= "My name is AskPython" tuple1=[11,22,33,44] print[5 in list1] #True print["is" in string1] #True print[88 in tuple1] #False2 nếu một số giá trị#in and not in operator working on Dictionary dict1 = {1: "one", 2: "two", 3: "three", 4: "four"} print["one" in dict1] print["one" not in dict1] print[3 in dict1] print[3 not in dict1] print[5 in dict1] print[5 not in dict1]3 với#in and not in operator working on Dictionary dict1 = {1: "one", 2: "two", 3: "three", 4: "four"} print["one" in dict1] print["one" not in dict1] print[3 in dict1] print[3 not in dict1] print[5 in dict1] print[5 not in dict1]4 được tạo ra trong khi lặp lại trên#in and not in operator working on Dictionary dict1 = {1: "one", 2: "two", 3: "three", 4: "four"} print["one" in dict1] print["one" not in dict1] print[3 in dict1] print[3 not in dict1] print[5 in dict1] print[5 not in dict1]5. Nếu một ngoại lệ được nâng lên trong quá trình lặp, như thểin
đã nêu ra ngoại lệ đó.Cuối cùng, giao thức lặp theo phong cách cũ được thử: nếu một lớp xác định
__getitem__[]
,#in operator working list1= [1,2,3,4,5] string1= "My name is AskPython" tuple1=[11,22,33,44] print[5 in list1] #True print["is" in string1] #True print[88 in tuple1] #False7 là#in operator working list1= [1,2,3,4,5] string1= "My name is AskPython" tuple1=[11,22,33,44] print[5 in list1] #True print["is" in string1] #True print[88 in tuple1] #False2 khi và chỉ khi có chỉ số số nguyên không âm I sao choin
0 và tất cả các chỉ số số nguyên thấp hơn không tăng ngoại lệin
1. [Nếu bất kỳ ngoại lệ nào khác được nâng lên, như thểin
đã nêu ra ngoại lệ đó].Toán tử
#in operator working list1= [1,2,3,4,5] string1= "My name is AskPython" tuple1=[11,22,33,44] print[5 in list1] #True print["is" in string1] #True print[88 in tuple1] #False0 được xác định là có giá trị thực nghịch củain
.
Như một nhận xét chỉ ra ở trên, toán tử biểu thức in
khác với từ khóa in
tạo thành một phần của câu lệnh in
7. Trong ngữ pháp Python, in
được "mã hóa cứng" như một phần của cú pháp của in
7:
for_stmt ::= "for" target_list "in" expression_list ":" suite ["else" ":" suite]
Vì vậy, trong bối cảnh của một tuyên bố in
7, in
không hoạt động như một nhà điều hành, nó chỉ đơn giản là một điểm đánh dấu cú pháp để tách __contains__
2 khỏi __contains__
3.
Chào! Vì vậy, hôm nay chúng ta sẽ thảo luận về các nhà điều hành của người Viking và không phải trong các nhà khai thác ở Python.the “in” and “not in” operators in Python. Về cơ bản, toán tử Khi được sử dụng trong một điều kiện, câu lệnh trả về kết quả boolean đánh giá thành Python "trong nhà điều hành"
in
trong Python có kiểm tra xem giá trị được chỉ định có phải là phần tử cấu thành của chuỗi như chuỗi, mảng, danh sách hoặc tuple, v.v.#in operator working
list1= [1,2,3,4,5]
string1= "My name is AskPython"
tuple1=[11,22,33,44]
print[5 in list1] #True
print["is" in string1] #True
print[88 in tuple1] #False
2 hoặc #in operator working
list1= [1,2,3,4,5]
string1= "My name is AskPython"
tuple1=[11,22,33,44]
print[5 in list1] #True
print["is" in string1] #True
print[88 in tuple1] #False
3. Khi giá trị được chỉ định được tìm thấy bên trong chuỗi, câu lệnh trả về #in operator working
list1= [1,2,3,4,5]
string1= "My name is AskPython"
tuple1=[11,22,33,44]
print[5 in list1] #True
print["is" in string1] #True
print[88 in tuple1] #False
2. Trong khi đó khi nó không được tìm thấy, chúng ta sẽ nhận được một #in operator working
list1= [1,2,3,4,5]
string1= "My name is AskPython"
tuple1=[11,22,33,44]
print[5 in list1] #True
print["is" in string1] #True
print[88 in tuple1] #False
3.found inside the sequence, the statement returns #in operator working
list1= [1,2,3,4,5]
string1= "My name is AskPython"
tuple1=[11,22,33,44]
print[5 in list1] #True
print["is" in string1] #True
print[88 in tuple1] #False
2. Whereas when it is not found, we get a #in operator working
list1= [1,2,3,4,5]
string1= "My name is AskPython"
tuple1=[11,22,33,44]
print[5 in list1] #True
print["is" in string1] #True
print[88 in tuple1] #False
3.
Không cho phép chúng tôi lấy một ví dụ để hiểu rõ hơn về nhà điều hành in
làm việc.
#in operator working list1= [1,2,3,4,5] string1= "My name is AskPython" tuple1=[11,22,33,44] print[5 in list1] #True print["is" in string1] #True print[88 in tuple1] #False
Output:
Here:
Đầu tiên, chúng tôi đã khởi tạo một danh sách __contains__[]
0, chuỗi __contains__[]
1 và một tuple __contains__[]
2 với một số giá trị. Sau đó, chúng tôi sử dụng toán tử in
để kiểm tra xem một số giá trị có phải là một phần của chuỗi trên hay không.
Như chúng ta có thể thấy từ đầu ra ở trên, __contains__[]
4 đánh giá thành một sự thật. Trong đó biểu thị rằng giá trị 5 được tìm thấy bên trong danh sách.True. Which signifies that the value 5 is found inside the list.
Tương tự, sử dụng toán tử in
, chúng tôi cũng xác nhận sự hiện diện của chuỗi là IS IS trong __contains__[]
1. Nhưng đối với trường hợp cuối cùng, điều kiện dẫn đến sai vì 88 không có trong chuỗi __contains__[]
2.“is” in __contains__[]
1. But for the last case, the condition results in a False since 88 is not present inside the sequence __contains__[]
2.
Python "không có trong nhà điều hành"
Toán tử
#in operator working list1= [1,2,3,4,5] string1= "My name is AskPython" tuple1=[11,22,33,44] print[5 in list1] #True print["is" in string1] #True print[88 in tuple1] #False0 trong Python hoạt động chính xác theo cách ngược lại khi toán tử
in
hoạt động. Nó cũng kiểm tra sự hiện diện của một giá trị được chỉ định bên trong một chuỗi nhất định nhưng các giá trị trả về của nó hoàn toàn ngược lại với toán tử in
.Khi được sử dụng trong một điều kiện với giá trị được chỉ định có bên trong chuỗi, câu lệnh trả về
#in operator working list1= [1,2,3,4,5] string1= "My name is AskPython" tuple1=[11,22,33,44] print[5 in list1] #True print["is" in string1] #True print[88 in tuple1] #False3. Trong khi đó khi không, chúng ta sẽ nhận được
#in operator working list1= [1,2,3,4,5] string1= "My name is AskPython" tuple1=[11,22,33,44] print[5 in list1] #True print["is" in string1] #True print[88 in tuple1] #False2.
Chúng ta hãy lấy ví dụ trước, chỉ thay thế toán tử in
bằng
#in operator working list1= [1,2,3,4,5] string1= "My name is AskPython" tuple1=[11,22,33,44] print[5 in list1] #True print["is" in string1] #True print[88 in tuple1] #False0.
#not in operator working list1= [1,2,3,4,5] string1= "My name is AskPython" tuple1=[11,22,33,44] print[5 not in list1] #False print["is" not in string1] #False print[88 not in tuple1] #True
Output:
Đúng như dự đoán, đầu ra kết quả hoàn toàn trái ngược với những gì chúng ta nhận được trước đó bằng cách sử dụng toán tử in
.opposite of what we got earlier using the in
operator.
Làm việc của người Viking trong các nhà điều hành của người Viking và không phải trong các nhà khai thác trong từ điển Python
Trước đây chúng tôi đã thảo luận về hoạt động của toán tử in
và
#in operator working list1= [1,2,3,4,5] string1= "My name is AskPython" tuple1=[11,22,33,44] print[5 in list1] #True print["is" in string1] #True print[88 in tuple1] #False0 trên các loại chuỗi khác nhau. Nhưng từ điển không phải là trình tự. Không giống như chúng, từ điển được lập chỉ mục trên cơ sở các khóa.keys.
Vậy các nhà khai thác ở trên làm việc trên từ điển? Và nếu họ làm, làm thế nào để họ đánh giá điều kiện?
Hãy để chúng tôi cố gắng hiểu với một ví dụ.
#in and not in operator working on Dictionary dict1 = {1: "one", 2: "two", 3: "three", 4: "four"} print["one" in dict1] print["one" not in dict1] print[3 in dict1] print[3 not in dict1] print[5 in dict1] print[5 not in dict1]
Output:
Trước tiên, chúng tôi đã khởi tạo một từ điển __iter__[]
8 với một số khóa và giá trị tương ứng nhất định.keys and corresponding values.
Như chúng ta có thể thấy từ đầu ra ở trên, __iter__[]
9 đánh giá thành sai. Trong khi đó, __getitem__[]
0 cho chúng ta sự thật.False. Whereas, __getitem__[]
0 gives us True.
Vì vậy, rõ ràng là toán tử trong tìm kiếm phần tử giữa các khóa từ điển chứ không phải các giá trị. Do đó, tương tự như câu lệnh cuối cùng __getitem__[]
1 cũng dẫn đến sai vì nó không phải là chìa khóa trong từ điển.keys and not the values. Hence, similarly the last statement __getitem__[]
1 also results into a False as it is not a key in the dictionary.
Như đã đề cập trước đó, nhà điều hành
#in operator working list1= [1,2,3,4,5] string1= "My name is AskPython" tuple1=[11,22,33,44] print[5 in list1] #True print["is" in string1] #True print[88 in tuple1] #False0 ở đây cũng đánh giá theo cách tương tự.
Sự kết luận
Vì vậy, trong hướng dẫn này, chúng tôi đã tìm hiểu về các nhà khai thác in
và
#in operator working list1= [1,2,3,4,5] string1= "My name is AskPython" tuple1=[11,22,33,44] print[5 in list1] #True print["is" in string1] #True print[88 in tuple1] #False0 ở Python và họ làm việc với một số ví dụ.
Đối với bất kỳ câu hỏi nào nữa, hãy thoải mái sử dụng các ý kiến dưới đây.
Người giới thiệu
- Python "trong" và không phải trong các nhà điều hành thành viên của " - Tạp chí Dev Post,
- Làm thế nào để các câu nói của người Viking và không phải là trong câu hỏi của Python - câu hỏi về stackoverflow.