Hướng dẫn check if any value in array is true python - kiểm tra xem có bất kỳ giá trị nào trong mảng là đúng không python

Nói chung:

tmp = [x == big_foobar for x in foobars]
2 và
tmp = [x == big_foobar for x in foobars]
3 là các chức năng có một số có thể lặp lại và trở lại

  • Trong trường hợp của
    tmp = [x == big_foobar for x in foobars]
    
    5, không có giá trị nào trong ITBER là giả mạo;
  • Trong trường hợp của
    tmp = [x == big_foobar for x in foobars]
    
    6, ít nhất một giá trị là sự thật.

Một giá trị

tmp = [x == big_foobar for x in foobars]
7 là giả mạo IFF
tmp = [x == big_foobar for x in foobars]
8. Một giá trị
tmp = [x == big_foobar for x in foobars]
7 là sự thật IFF
In [1]: foobars = ['big', 'small', 'medium', 'nice', 'ugly']                                        

In [2]: big_foobar = 'big'                                                                          

In [3]: any[['big' == big_foobar, 'small' == big_foobar, 'medium' == big_foobar, 'nice' == big_foobar, 'ugly' == big_foobar]]        
Out[3]: True
0.

Những người không phải là người không phải là người khác sẽ ổn-

In [1]: foobars = ['big', 'small', 'medium', 'nice', 'ugly']                                        

In [2]: big_foobar = 'big'                                                                          

In [3]: any[['big' == big_foobar, 'small' == big_foobar, 'medium' == big_foobar, 'nice' == big_foobar, 'ugly' == big_foobar]]        
Out[3]: True
1 sẽ ánh xạ [hoặc ép buộc, nếu bạn thích] bất kỳ
tmp = [x == big_foobar for x in foobars]
7 nào theo các quy tắc sau:
In [1]: foobars = ['big', 'small', 'medium', 'nice', 'ugly']                                        

In [2]: big_foobar = 'big'                                                                          

In [3]: any[['big' == big_foobar, 'small' == big_foobar, 'medium' == big_foobar, 'nice' == big_foobar, 'ugly' == big_foobar]]        
Out[3]: True
3,
In [1]: foobars = ['big', 'small', 'medium', 'nice', 'ugly']                                        

In [2]: big_foobar = 'big'                                                                          

In [3]: any[['big' == big_foobar, 'small' == big_foobar, 'medium' == big_foobar, 'nice' == big_foobar, 'ugly' == big_foobar]]        
Out[3]: True
4,
In [1]: foobars = ['big', 'small', 'medium', 'nice', 'ugly']                                        

In [2]: big_foobar = 'big'                                                                          

In [3]: any[['big' == big_foobar, 'small' == big_foobar, 'medium' == big_foobar, 'nice' == big_foobar, 'ugly' == big_foobar]]        
Out[3]: True
5,
In [1]: foobars = ['big', 'small', 'medium', 'nice', 'ugly']                                        

In [2]: big_foobar = 'big'                                                                          

In [3]: any[['big' == big_foobar, 'small' == big_foobar, 'medium' == big_foobar, 'nice' == big_foobar, 'ugly' == big_foobar]]        
Out[3]: True
6,
In [1]: foobars = ['big', 'small', 'medium', 'nice', 'ugly']                                        

In [2]: big_foobar = 'big'                                                                          

In [3]: any[['big' == big_foobar, 'small' == big_foobar, 'medium' == big_foobar, 'nice' == big_foobar, 'ugly' == big_foobar]]        
Out[3]: True
7,
In [1]: foobars = ['big', 'small', 'medium', 'nice', 'ugly']                                        

In [2]: big_foobar = 'big'                                                                          

In [3]: any[['big' == big_foobar, 'small' == big_foobar, 'medium' == big_foobar, 'nice' == big_foobar, 'ugly' == big_foobar]]        
Out[3]: True
6,
In [1]: foobars = ['big', 'small', 'medium', 'nice', 'ugly']                                        

In [2]: big_foobar = 'big'                                                                          

In [3]: any[['big' == big_foobar, 'small' == big_foobar, 'medium' == big_foobar, 'nice' == big_foobar, 'ugly' == big_foobar]]        
Out[3]: True
9
In [1]: any[x > 5 for x in range[4]]
Out[1]: False

In [2]: all[isinstance[x, int] for x in range[10]]
Out[2]: True

In [3]: any[x == 'Erik' for x in ['Erik', 'John', 'Jane', 'Jim']]
Out[3]: True

In [4]: all[[True, True, True, False, True]]
Out[4]: False
0, bất cứ điều gì khác cho
tmp = [x == big_foobar for x in foobars]
4. DocString cho
In [1]: any[x > 5 for x in range[4]]
Out[1]: False

In [2]: all[isinstance[x, int] for x in range[10]]
Out[2]: True

In [3]: any[x == 'Erik' for x in ['Erik', 'John', 'Jane', 'Jim']]
Out[3]: True

In [4]: all[[True, True, True, False, True]]
Out[4]: False
2 sử dụng các thuật ngữ 'true'/'false' cho 'sự thật'/'falsy' và ________ 24/________ 40 cho các giá trị boolean cụ thể.

Trong các mẫu mã cụ thể của bạn:

Bạn đã hiểu lầm một chút cách các chức năng này hoạt động. Do đó, những điều sau đây làm điều gì đó hoàn toàn không phải là những gì bạn nghĩ:

if any[foobars] == big_foobar:

... Bởi vì

In [1]: any[x > 5 for x in range[4]]
Out[1]: False

In [2]: all[isinstance[x, int] for x in range[10]]
Out[2]: True

In [3]: any[x == 'Erik' for x in ['Erik', 'John', 'Jane', 'Jim']]
Out[3]: True

In [4]: all[[True, True, True, False, True]]
Out[4]: False
5 trước tiên sẽ được đánh giá thành
tmp = [x == big_foobar for x in foobars]
4 hoặc
In [1]: any[x > 5 for x in range[4]]
Out[1]: False

In [2]: all[isinstance[x, int] for x in range[10]]
Out[2]: True

In [3]: any[x == 'Erik' for x in ['Erik', 'John', 'Jane', 'Jim']]
Out[3]: True

In [4]: all[[True, True, True, False, True]]
Out[4]: False
0, và sau đó giá trị boolean đó sẽ được so sánh với
In [1]: any[x > 5 for x in range[4]]
Out[1]: False

In [2]: all[isinstance[x, int] for x in range[10]]
Out[2]: True

In [3]: any[x == 'Erik' for x in ['Erik', 'John', 'Jane', 'Jim']]
Out[3]: True

In [4]: all[[True, True, True, False, True]]
Out[4]: False
8, thường luôn mang lại cho bạn
In [1]: any[x > 5 for x in range[4]]
Out[1]: False

In [2]: all[isinstance[x, int] for x in range[10]]
Out[2]: True

In [3]: any[x == 'Erik' for x in ['Erik', 'John', 'Jane', 'Jim']]
Out[3]: True

In [4]: all[[True, True, True, False, True]]
Out[4]: False
0 [trừ khi
In [1]: any[x > 5 for x in range[4]]
Out[1]: False

In [2]: all[isinstance[x, int] for x in range[10]]
Out[2]: True

In [3]: any[x == 'Erik' for x in ['Erik', 'John', 'Jane', 'Jim']]
Out[3]: True

In [4]: all[[True, True, True, False, True]]
Out[4]: False
8 tình cờ là cùng một giá trị boolean].

LƯU Ý: ITEBLE có thể là một danh sách, nhưng nó cũng có thể là biểu thức trình tạo/máy phát [≈ đánh giá/danh sách được tạo ra] hoặc bất kỳ trình lặp khác. the iterable can be a list, but it can also be a generator/generator expression [≈ lazily evaluated/generated list] or any other iterator.

Thay vào đó, những gì bạn muốn là:

if any[x == big_foobar for x in foobars]:

Về cơ bản, trước tiên xây dựng một số lượng có thể mang lại một chuỗi booleans cho mỗi mục trong

animals = ['Dog', 'Cat', 'Bird', 'Fish']
1, nó so sánh mục với
In [1]: any[x > 5 for x in range[4]]
Out[1]: False

In [2]: all[isinstance[x, int] for x in range[10]]
Out[2]: True

In [3]: any[x == 'Erik' for x in ['Erik', 'John', 'Jane', 'Jim']]
Out[3]: True

In [4]: all[[True, True, True, False, True]]
Out[4]: False
8 và phát ra boolean kết quả vào chuỗi kết quả:

tmp = [x == big_foobar for x in foobars]

Sau đó

tmp = [x == big_foobar for x in foobars]
3 đi qua tất cả các mục trong
animals = ['Dog', 'Cat', 'Bird', 'Fish']
4 và trả lại
tmp = [x == big_foobar for x in foobars]
4 ngay khi tìm thấy yếu tố sự thật đầu tiên. Như thể bạn đã làm như sau:

In [1]: foobars = ['big', 'small', 'medium', 'nice', 'ugly']                                        

In [2]: big_foobar = 'big'                                                                          

In [3]: any[['big' == big_foobar, 'small' == big_foobar, 'medium' == big_foobar, 'nice' == big_foobar, 'ugly' == big_foobar]]        
Out[3]: True

Lưu ý: Như DSM đã chỉ ra,

animals = ['Dog', 'Cat', 'Bird', 'Fish']
6 tương đương với
animals = ['Dog', 'Cat', 'Bird', 'Fish']
7 nhưng cái sau dễ đọc hơn, nhanh hơn để viết và chạy nhanh hơn.
As DSM pointed out,
animals = ['Dog', 'Cat', 'Bird', 'Fish']
6 is equivalent to
animals = ['Dog', 'Cat', 'Bird', 'Fish']
7 but the latter is more readable, quicker to write and runs faster.

Vài ví dụ:

In [1]: any[x > 5 for x in range[4]]
Out[1]: False

In [2]: all[isinstance[x, int] for x in range[10]]
Out[2]: True

In [3]: any[x == 'Erik' for x in ['Erik', 'John', 'Jane', 'Jim']]
Out[3]: True

In [4]: all[[True, True, True, False, True]]
Out[4]: False

Xem thêm: //docs.python.org/2/l Library/funces.html#all

Giới thiệu

Trong hướng dẫn này, chúng ta sẽ xem cách kiểm tra xem danh sách có chứa phần tử hoặc giá trị trong Python không. Chúng tôi sẽ sử dụng một danh sách các chuỗi, chứa một vài động vật:

animals = ['Dog', 'Cat', 'Bird', 'Fish']

Kiểm tra xem danh sách có chứa phần tử với vòng lặp không

Một phương pháp đơn giản và thô sơ để kiểm tra xem danh sách có chứa một phần tử đang lặp qua nó không và kiểm tra xem mục chúng tôi có phù hợp với phần chúng tôi đang tìm kiếm không. Hãy sử dụng vòng lặp

animals = ['Dog', 'Cat', 'Bird', 'Fish']
8 cho việc này:

for animal in animals:
    if animal == 'Bird':
        print['Chirp!']

Mã này sẽ dẫn đến:

Chirp!

Kiểm tra xem danh sách có chứa phần tử với toán tử không

Bây giờ, một cách tiếp cận succint hơn sẽ là sử dụng toán tử

animals = ['Dog', 'Cat', 'Bird', 'Fish']
9 tích hợp, nhưng với câu lệnh
for animal in animals:
    if animal == 'Bird':
        print['Chirp!']
0 thay vì câu lệnh
animals = ['Dog', 'Cat', 'Bird', 'Fish']
8. Khi được ghép nối với
for animal in animals:
    if animal == 'Bird':
        print['Chirp!']
0, nó sẽ trả về
tmp = [x == big_foobar for x in foobars]
4 nếu một phần tử tồn tại theo một chuỗi hay không. Cú pháp của toán tử
animals = ['Dog', 'Cat', 'Bird', 'Fish']
9 trông như thế này:

element in list

Sử dụng toán tử này, chúng tôi có thể rút ngắn mã trước đó thành một câu lệnh:

if 'Bird' in animals: print['Chirp']

Đoạn mã này sẽ xuất ra như sau:

if any[x == big_foobar for x in foobars]:
0

Cách tiếp cận này có hiệu quả tương tự như vòng lặp

animals = ['Dog', 'Cat', 'Bird', 'Fish']
8, vì toán tử
animals = ['Dog', 'Cat', 'Bird', 'Fish']
9, được sử dụng như thế này, gọi hàm
for animal in animals:
    if animal == 'Bird':
        print['Chirp!']
7, vốn đã lặp qua danh sách - mặc dù, nó dễ đọc hơn nhiều.

Kiểm tra xem danh sách có chứa phần tử không có trong toán tử không

Ngược lại, chúng ta có thể sử dụng toán tử

for animal in animals:
    if animal == 'Bird':
        print['Chirp!']
8, là đối diện logic của toán tử
animals = ['Dog', 'Cat', 'Bird', 'Fish']
9. Nó trả về
tmp = [x == big_foobar for x in foobars]
4 nếu phần tử không có mặt trong một chuỗi.

Hãy viết lại ví dụ về mã trước đó để sử dụng toán tử

for animal in animals:
    if animal == 'Bird':
        print['Chirp!']
8:

if any[x == big_foobar for x in foobars]:
1

Chạy mã này sẽ không tạo ra bất cứ điều gì, vì

Chirp!
2 có trong danh sách của chúng tôi.

Nhưng nếu chúng ta dùng thử với

Chirp!
3:

if any[x == big_foobar for x in foobars]:
2

Mã này dẫn đến:

if any[x == big_foobar for x in foobars]:
3

Kiểm tra xem danh sách có chứa phần tử với Lambda không

Một cách khác, bạn có thể kiểm tra xem một phần tử có mặt không phải là lọc mọi thứ khác ngoài phần tử đó, giống như sàng lọc qua cát và kiểm tra xem cuối cùng có bất kỳ vỏ nào không. Phương pháp

Chirp!
4 tích hợp chấp nhận hàm Lambda và danh sách là đối số của nó. Chúng tôi có thể sử dụng chức năng Lambda ở đây để kiểm tra chuỗi
Chirp!
5 của chúng tôi trong danh sách
Chirp!
6.

Sau đó, chúng tôi kết thúc kết quả trong một

Chirp!
7 kể từ khi phương thức
Chirp!
4 trả về một đối tượng
Chirp!
9, không phải là kết quả. Nếu chúng ta đóng gói đối tượng
Chirp!
9 trong danh sách, nó sẽ chứa các phần tử còn lại sau khi lọc:

if any[x == big_foobar for x in foobars]:
4

Mã này dẫn đến:

Kiểm tra xem danh sách có chứa phần tử với Lambda không

if any[x == big_foobar for x in foobars]:
5

Một cách khác, bạn có thể kiểm tra xem một phần tử có mặt không phải là lọc mọi thứ khác ngoài phần tử đó, giống như sàng lọc qua cát và kiểm tra xem cuối cùng có bất kỳ vỏ nào không. Phương pháp

Chirp!
4 tích hợp chấp nhận hàm Lambda và danh sách là đối số của nó. Chúng tôi có thể sử dụng chức năng Lambda ở đây để kiểm tra chuỗi
Chirp!
5 của chúng tôi trong danh sách
Chirp!
6.

if any[x == big_foobar for x in foobars]:
6

Sau đó, chúng tôi kết thúc kết quả trong một

Chirp!
7 kể từ khi phương thức
Chirp!
4 trả về một đối tượng
Chirp!
9, không phải là kết quả. Nếu chúng ta đóng gói đối tượng
Chirp!
9 trong danh sách, nó sẽ chứa các phần tử còn lại sau khi lọc:

Kiểm tra hướng dẫn thực hành của chúng tôi, thực tế để học Git, với các thực hành tốt nhất, các tiêu chuẩn được công nghiệp chấp nhận và bao gồm bảng gian lận. Ngừng các lệnh git googling và thực sự tìm hiểu nó!

Bây giờ, cách tiếp cận này không phải là hiệu quả nhất. Nó khá chậm hơn ba cách tiếp cận trước đó chúng tôi đã sử dụng. Phương thức

Chirp!
4 tự nó tương đương với hàm máy phát:

if any[x == big_foobar for x in foobars]:
7

Hiệu suất bị chậm lại của mã này, trong số những thứ khác, xuất phát từ thực tế là chúng ta đang chuyển đổi kết quả thành một danh sách cuối cùng, cũng như thực hiện một hàm trên mục trên mỗi lần lặp.

if any[x == big_foobar for x in foobars]:
0

Kiểm tra xem danh sách có chứa phần tử bằng bất kỳ []

Một cách tiếp cận tích hợp tuyệt vời khác là sử dụng hàm
tmp = [x == big_foobar for x in foobars]
6, đây chỉ là hàm trợ giúp kiểm tra xem có [ít nhất 1] trường hợp của một phần tử trong danh sách không. Nó trả về
tmp = [x == big_foobar for x in foobars]
4 hoặc
In [1]: any[x > 5 for x in range[4]]
Out[1]: False

In [2]: all[isinstance[x, int] for x in range[10]]
Out[2]: True

In [3]: any[x == 'Erik' for x in ['Erik', 'John', 'Jane', 'Jim']]
Out[3]: True

In [4]: all[[True, True, True, False, True]]
Out[4]: False
0 dựa trên sự hiện diện hoặc thiếu của một yếu tố:

Vì điều này dẫn đến

tmp = [x == big_foobar for x in foobars]
4, tuyên bố
element in list
6 của chúng tôi được gọi là:

if any[x == big_foobar for x in foobars]:
9

Cách tiếp cận này cũng là một cách hiệu quả để kiểm tra sự hiện diện của một yếu tố. Nó hiệu quả như ba đầu tiên.

Hãy kiểm tra kết quả của hàm

element in list
7:

tmp = [x == big_foobar for x in foobars]
0

Hàm

element in list
7 vốn đã lặp lại danh sách để kiểm tra số lượng xảy ra và mã này dẫn đến:

if any[x == big_foobar for x in foobars]:
0

Sự kết luận

Trong hướng dẫn này, chúng tôi đã đi qua một số cách để kiểm tra xem một yếu tố có mặt trong danh sách hay không. Chúng tôi đã sử dụng các toán tử

animals = ['Dog', 'Cat', 'Bird', 'Fish']
8,
animals = ['Dog', 'Cat', 'Bird', 'Fish']
9 và
for animal in animals:
    if animal == 'Bird':
        print['Chirp!']
8, cũng như các phương pháp
Chirp!
4,
tmp = [x == big_foobar for x in foobars]
6 và
element in list
7.

Bài Viết Liên Quan

Chủ Đề