Python lấy tập hợp con của danh sách dựa trên điều kiện
Trong ví dụ này, chúng ta sẽ thảo luận về 4 cách khác nhau để đếm số phần tử trong một danh sách thỏa mãn các điều kiện nhất định Show
Giả sử chúng ta có một danh sách các số i. e # List of numbers listOfElems = [11, 22, 33, 45, 66, 77, 88, 99, 101] Chúng tôi muốn đếm số phần tử trong danh sách thỏa mãn các điều kiện đã cho của chúng tôi. Những điều kiện này có thể giống như,
Có nhiều cách khác nhau để làm điều đó. Hãy thảo luận từng cái một, Sử dụng map() & sum() để đếm các phần tử trong danh sách thỏa mãn một số điều kiệnhàm map() map(function, iterable, ...) Hàm map() trong python chấp nhận một hàm và một danh sách giống như có thể lặp lại. Sau đó, áp dụng hàm đã cho cho từng phần tử trong danh sách và nối kết quả của hàm vào danh sách mới. Cuối cùng map() trả về danh sách mới này tôi. e. danh sách kết quả. Hàm tổng () sum(iterable, start=0) sum() cộng các mục trong một lần lặp đã cho. Hãy sử dụng cả hai hàm này để đếm các phần tử trong danh sách theo điều kiện Đếm số lẻ trong danh sáchGiải pháp dòng đơn là, listOfElems = [11, 22, 33, 45, 66, 77, 88, 99, 101] # Count odd numbers in the list count = sum(map(lambda x : x%2 == 1, listOfElems)) print('Count of odd numbers in a list : ', count) Đầu ra. ______4 Nó hoạt động như thế nào? Hãy phá vỡ giải pháp trên theo từng bước nhỏ để hiểu cách thức hoạt động của nó Trong trường hợp này, điều kiện của chúng ta là số đó phải là số lẻ. Vì vậy, hãy tạo một hàm lambda để kiểm tra điều kiện này. e lambda x : x%2 == 1 Bây giờ hãy chuyển điều kiện / hàm lambda của chúng ta tới map() và lấy đối tượng bản đồ là kết quả i. e. ______6 Hàm lambda đã cho được áp dụng cho từng phần tử trong danh sách và kết quả được lưu trữ trong đối tượng bản đồ. Vì hàm lambda của chúng tôi trả về một bool, nên đối tượng bản đồ chứa các phần tử bool. Chúng ta có thể kiểm tra kết quả bằng cách in nội dung đối tượng bản đồ i. e. print('Contents of map object : ', list(mapObj)) Đầu ra. ______8 Số True trong danh sách bool này đại diện cho số phần tử lẻ trong danh sách. Hãy đếm số lần xuất hiện của True trong đối tượng bản đồ này bằng cách sử dụng hàm sum() i. e. # Add number of True / 1 in the map object of bools count = sum(mapObj) Đây là cách chúng tôi tìm thấy số phần tử trong danh sách thỏa mãn một điều kiện nhất định. Hãy xem thêm một số ví dụ để đếm các phần tử trong danh sách dựa trên điều kiện sử dụng sum() & map() Đếm số chẵn trong danh sáchmap(function, iterable, ...)0 Đầu ra. ______11 Đếm số trong danh sách lớn hơn 5map(function, iterable, ...)2 Đầu ra. ______13 Sử dụng biểu thức sum() & Generator để đếm các phần tử trong danh sách dựa trên các điều kiệnHãy tạo một hàm sử dụng sum() & Biểu thức trình tạo để đếm số phần tử trong danh sách thỏa mãn điều kiện đã cho của chúng tôi i. e map(function, iterable, ...)4 Hàm này chấp nhận danh sách và hàm gọi lại làm đối số. Chức năng gọi lại sẽ là chức năng của chúng tôi kiểm tra điều kiện. Hàm này gọi hàm gọi lại đã cho trên từng phần tử trong danh sách và trả về số lượng phần tử trong danh sách trả về True khi được chuyển đến điều kiện của chúng tôi i. e. gọi lại. Hãy sử dụng chức năng này để đếm số phần tử trong danh sách thỏa mãn điều kiện của chúng tôi, Đếm số trong danh sách lớn hơn 5map(function, iterable, ...)5 Đầu ra. ______13 Đếm các số trong danh sách lớn hơn 5 nhưng nhỏ hơn 20map(function, iterable, ...)7 Đầu ra. ______18 Nếu không truyền hàm gọi lại thì hàm này sẽ trả về tổng số phần tử trong danh sách i. e. Đếm tổng số phần tử trong danh sáchmap(function, iterable, ...)9 Đầu ra sum(iterable, start=0)0 Sử dụng len() & Khả năng hiểu danh sách để đếm các phần tử trong danh sách dựa trên các điều kiệnChúng ta có thể sử dụng khả năng hiểu danh sách để tạo một danh sách mới gồm các phần tử thỏa mãn điều kiện đã cho và sau đó lấy độ dài của danh sách mới này để tìm ra số phần tử trong danh sách ban đầu thỏa mãn điều kiện của chúng ta. e Phương thức Count of odd numbers in a list : 62 không trả về giá trị đã bị xóa mà chỉ trả về sum(iterable, start=0)15, nghĩa là không có giá trị trả về Nếu bạn cần xóa một mục theo số chỉ mục của nó và/hoặc vì lý do nào đó mà bạn muốn trả lại (lưu) giá trị mà bạn đã xóa, hãy sử dụng phương thức sum(iterable, start=0)16 để thay thế Cách xóa phần tử khỏi danh sách bằng phương thức Count of odd numbers in a list : 62 trong PythonĐể xóa một phần tử khỏi danh sách bằng phương thức Count of odd numbers in a list : 62, hãy chỉ định giá trị của phần tử đó và chuyển nó làm đối số cho phương thức Count of odd numbers in a list : 62 sẽ tìm kiếm danh sách để tìm và xóa nó sum(iterable, start=0)3 Nếu bạn chỉ định một giá trị không có trong danh sách, thì bạn sẽ gặp lỗi – cụ thể lỗi sẽ là sum(iterable, start=0)40 sum(iterable, start=0)1 Để tránh lỗi này xảy ra, trước tiên bạn có thể kiểm tra xem giá trị bạn muốn xóa có nằm trong danh sách ban đầu hay không bằng cách sử dụng từ khóa sum(iterable, start=0)41 Nó sẽ trả về một giá trị Boolean – sum(iterable, start=0)42 nếu mục có trong danh sách hoặc sum(iterable, start=0)43 nếu giá trị không có trong danh sách sum(iterable, start=0)4 Một cách khác để tránh lỗi này là tạo một điều kiện có nội dung cơ bản là "Nếu giá trị này là một phần của danh sách thì hãy xóa nó. Nếu nó không tồn tại, thì hiển thị thông báo cho biết nó không có trong danh sách" listOfElems = [11, 22, 33, 45, 66, 77, 88, 99, 101] # Count odd numbers in the list count = sum(map(lambda x : x%2 == 1, listOfElems)) print('Count of odd numbers in a list : ', count)0 Bây giờ, thay vì gặp lỗi Python khi bạn đang cố xóa một giá trị nhất định không tồn tại, bạn sẽ nhận được thông báo trả về cho biết mục bạn muốn xóa không có trong danh sách bạn đang làm việc. Phương pháp Count of odd numbers in a list : 62 Loại bỏ sự xuất hiện đầu tiên của một mục trong danh sáchMột điều cần lưu ý khi sử dụng phương pháp Count of odd numbers in a list : 62 là nó sẽ tìm kiếm và sẽ chỉ loại bỏ phiên bản đầu tiên của một mục Điều này có nghĩa là nếu trong danh sách có nhiều hơn một phiên bản của mục có giá trị mà bạn đã chuyển làm đối số cho phương thức, thì chỉ lần xuất hiện đầu tiên sẽ bị xóa Hãy xem ví dụ sau listOfElems = [11, 22, 33, 45, 66, 77, 88, 99, 101] # Count odd numbers in the list count = sum(map(lambda x : x%2 == 1, listOfElems)) print('Count of odd numbers in a list : ', count)1 Trong ví dụ trên, mục có giá trị sum(iterable, start=0)46 xuất hiện ba lần trong danh sách Khi sử dụng Count of odd numbers in a list : 62, chỉ phiên bản khớp đầu tiên bị xóa - phiên bản theo sau giá trị sum(iterable, start=0)48 và đứng trước giá trị sum(iterable, start=0)49 Hai lần xuất hiện khác của sum(iterable, start=0)46 vẫn còn trong danh sách Điều gì sẽ xảy ra khi bạn muốn xóa tất cả các lần xuất hiện của một mục? Chỉ sử dụng Count of odd numbers in a list : 62 không thực hiện được điều đó và bạn có thể không muốn xóa phiên bản đầu tiên của mục bạn đã chỉ định Cách xóa tất cả các trường hợp của một mục trong danh sách bằng PythonMột trong những cách để loại bỏ tất cả các lần xuất hiện của một mục trong danh sách là sử dụng khả năng hiểu danh sách Khả năng hiểu danh sách tạo danh sách mới từ danh sách hiện có hoặc tạo danh sách phụ Thao tác này sẽ không sửa đổi danh sách ban đầu của bạn mà thay vào đó sẽ tạo một danh sách mới thỏa mãn điều kiện bạn đặt listOfElems = [11, 22, 33, 45, 66, 77, 88, 99, 101] # Count odd numbers in the list count = sum(map(lambda x : x%2 == 1, listOfElems)) print('Count of odd numbers in a list : ', count)6 Trong ví dụ trên, có danh sách listOfElems = [11, 22, 33, 45, 66, 77, 88, 99, 101] # Count odd numbers in the list count = sum(map(lambda x : x%2 == 1, listOfElems)) print('Count of odd numbers in a list : ', count)02 ban đầu Sau đó, một danh sách mới (hoặc danh sách con) được trả về Các mục chứa trong danh sách con phải đáp ứng một điều kiện. Điều kiện là nếu một mục trong danh sách ban đầu có giá trị là sum(iterable, start=0)46, thì nó sẽ không thuộc danh sách phụ Bây giờ, nếu bạn không muốn tạo danh sách mới mà thay vào đó muốn sửa đổi tại chỗ danh sách đã tồn tại, thì hãy sử dụng phép gán lát cắt kết hợp với khả năng hiểu danh sách Với phép gán lát, bạn có thể sửa đổi và thay thế một số phần (hoặc lát) nhất định của danh sách Để thay thế toàn bộ danh sách, hãy sử dụng cú pháp cắt lát listOfElems = [11, 22, 33, 45, 66, 77, 88, 99, 101] # Count odd numbers in the list count = sum(map(lambda x : x%2 == 1, listOfElems)) print('Count of odd numbers in a list : ', count)04, cùng với khả năng hiểu danh sách Khả năng hiểu danh sách đặt điều kiện rằng bất kỳ mục nào có giá trị sum(iterable, start=0)46 sẽ không còn là một phần của danh sách Count of odd numbers in a list : 61 Phần kết luậnVà bạn có nó rồi đấy. Bây giờ bạn đã biết cách xóa một mục danh sách trong Python bằng phương pháp Count of odd numbers in a list : 62. Bạn cũng đã thấy một số cách loại bỏ tất cả các lần xuất hiện của một mục trong danh sách bằng Python Tôi hy vọng bạn tìm thấy bài viết này hữu ích Để tìm hiểu thêm về ngôn ngữ lập trình Python, hãy xem Chứng chỉ máy tính khoa học với Python của freeCodeCamp Bạn sẽ bắt đầu từ những điều cơ bản và học theo cách tương tác và thân thiện với người mới bắt đầu. Cuối cùng, bạn cũng sẽ xây dựng năm dự án để đưa vào thực tế và giúp củng cố những gì bạn đã học Cảm ơn vì đã đọc và viết mã vui vẻ 😊 QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO Học một cái gì đó mới mỗi ngày và viết về nó Nếu bài viết này hữu ích, hãy tweet nó Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu |