Hàm liệt kê nhận một đối tượng có thể lặp lại và trả về một đối tượng liệt kê chứa các bộ trong đó phần tử đầu tiên là chỉ mục và phần tử thứ hai - mục Mục đầu tiên trong mỗi bộ là chỉ mục và mục thứ hai là mục danh sách tại chỉ mục đã cho Chúng tôi đã sử dụng cách hiểu danh sách để lặp lại đối tượng liệt kê Khả năng hiểu danh sách được sử dụng để thực hiện một số thao tác cho mọi phần tử hoặc chọn một tập hợp con các phần tử đáp ứng một điều kiện Trên mỗi lần lặp, chúng tôi trừ mục hiện tại khỏi mục trước đó trong danh sách và trả về kết quả Một điều quan trọng cần lưu ý là - chúng tôi đã sử dụng danh sách cắt lớp Điều này là cần thiết vì chúng tôi không muốn trừ mục danh sách ở chỉ mục Cú pháp để cắt danh sách là listA has consecutive numbers ListB has no consecutive numbers0 là loại trừ Nếu giá trị listA has consecutive numbers ListB has no consecutive numbers0 bị bỏ qua, lát sẽ đi đến cuối danh sách Ngoài ra, bạn có thể kiểm tra xem giá trị của listA has consecutive numbers ListB has no consecutive numbers2 có lớn hơn 0 khôngNếu chỉ mục lớn hơn Bạn chọn cách tiếp cận nào là vấn đề sở thích cá nhân. Tôi muốn cắt danh sách vì tôi thấy nó trực quan hơn là kiểm tra một điều kiện mà chúng tôi chỉ quan tâm trong lần lặp đầu tiên Công cụ sau đây trực quan hóa những gì máy tính đang làm từng bước khi nó thực thi chương trình nói trên Trình chỉnh sửa mã Python Có một cách khác để giải quyết giải pháp này? Trước. Viết chương trình Python để trích xuất số lượng phần tử được chỉ định từ một danh sách nhất định, nối tiếp nhau liên tục. Mức độ khó của bài tập này là gì? Dễ dàng trung bình khóKiểm tra kỹ năng Lập trình của bạn với bài kiểm tra của w3resource con trăn. Lời khuyên trong ngàyTừ điển đặt hàng Cấu trúc dữ liệu từ điển mặc định của Python không có bất kỳ thứ tự chỉ mục nào. Bạn có thể coi các cặp khóa-giá trị là các mặt hàng hỗn hợp trong một túi. Điều này làm cho từ điển rất hiệu quả để làm việc với. Tuy nhiên, đôi khi bạn chỉ cần đặt từ điển của mình Tùy thuộc vào nhu cầu phân tích dữ liệu của chúng tôi, chúng tôi có thể cần kiểm tra sự hiện diện của các số thứ tự trong bộ chứa dữ liệu python. Trong chương trình dưới đây, ta tìm xem trong các phần tử của Alist có tồn tại các số liên tiếp không Với phạm vi và được sắp xếpHàm sorted sẽ sắp xếp lại các phần tử của danh sách theo thứ tự đã sắp xếp. Sau đó, chúng tôi áp dụng hàm phạm vi lấy các số thấp nhất và cao nhất tạo thành danh sách bằng các hàm tối thiểu và tối đa. Chúng tôi lưu trữ kết quả của các hoạt động trên trong hai danh sách và so sánh chúng cho bằng nhau Ví dụBản thử trực tiếp listA = [23,20,22,21,24] sorted_list = sorted(listA) #sorted(l) == range_list=list(range(min(listA), max(listA)+1)) if sorted_list == range_list: print("listA has consecutive numbers") else: print("listA has no consecutive numbers") # Checking again listB = [23,20,13,21,24] sorted_list = sorted(listB) #sorted(l) == range_list=list(range(min(listB), max(listB)+1)) if sorted_list == range_list: print("ListB has consecutive numbers") else: print("ListB has no consecutive numbers") đầu raChạy đoạn mã trên cho chúng ta kết quả sau - listA has consecutive numbers ListB has no consecutive numbers Với numpy diff và sắp xếpHàm diff trong numpy có thể tìm thấy sự khác biệt giữa mỗi số sau khi chúng được sắp xếp. Chúng tôi lấy tổng của sự khác biệt này. Điều đó sẽ khớp với độ dài của danh sách nếu tất cả các số liên tiếp Giả sử chúng ta có một dãy số được gọi là nums. Chúng ta phải kiểm tra xem nó có chứa các giá trị liền kề hay không Vì vậy, nếu đầu vào giống như nums = [6, 8, 3, 5, 4, 7], thì đầu ra sẽ đúng vì các phần tử là 3, 4, 5, 6, 7, 8 Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
Chúng ta hãy xem triển khai sau đây để hiểu rõ hơn - Ví dụBản thử trực tiếp def solve(nums): if len(nums) < 1: return False min_val = min(nums) max_val = max(nums) if max_val - min_val + 1 == len(nums): for i in range(len(nums)): if nums[i] < 0: j = -nums[i] - min_val else: j = nums[i] - min_val if nums[j] > 0: nums[j] = -nums[j] else: return False return True return False nums = [6, 8, 3, 5, 4, 7] print(solve(nums)) Đầu vào[6, 8, 3, 5, 4, 7] đầu raTrue |