Phân tích dữ liệu đưa ra các tình huống phức tạp trong đó dữ liệu cần được xoay quanh để di chuyển. Trong bối cảnh này, hãy xem cách chúng ta có thể lấy một danh sách lớn và chia nó thành nhiều danh sách phụ theo yêu cầu. Trong bài viết này, chúng ta sẽ khám phá các cách tiếp cận để đạt được điều này.
Với zip và vòng lặp for
Trong cách tiếp cận này, chúng tôi sử dụng dicing danh sách để lấy các phần tử từ thời điểm mà việc tách phải xảy ra. Sau đó, chúng tôi sử dụng zip và vòng lặp for để tạo danh sách con bằng vòng lặp for.
Ví dụ
Alist = ['Mon', 'Tue', 'Wed', 6, 7, 'Thu', 'Fri', 11, 21, 4] # The indexes to split at split_points = [2, 5, 8] # Given list print("Given list : " + str(Alist)) # SPlit at print("The points of splitting : ",split_points) #Perform the split split_list = [Alist[i: j] for i, j in zip([0] + split_points, split_points + [None])] # printing result print("The split lists are : ", split_list)
Đầu ra
Chạy đoạn mã trên cho chúng ta kết quả sau -
Given list : ['Mon', 'Tue', 'Wed', 6, 7, 'Thu', 'Fri', 11, 21, 4] The points of splitting : [2, 5, 8] The split lists are : [['Mon', 'Tue'], ['Wed', 6, 7], ['Thu', 'Fri', 11], [21, 4]]
Sử dụng chuỗi và zip
Hàm chuỗi tạo một trình lặp trả về các phần tử từ lần lặp đầu tiên có thể lặp lại cho đến khi nó hết. Vì vậy, nó đánh dấu các điểm mà sự phân tách xảy ra. Sau đó, chúng tôi sử dụng hàm zip để đóng gói kết quả của việc tách thành các danh sách con.
Ví dụ
from itertools import chain Alist = ['Mon', 'Tue', 'Wed', 6, 7, 'Thu', 'Fri', 11, 21, 4] # The indexes to split at split_points = [2, 5, 8] # Given list print("Given list : ", str(Alist)) # Split at print("The points of splitting : ",split_points) # to perform custom list split sublists = zip(chain([0], split_points), chain(split_points, [None])) split_list = list(Alist[i : j] for i, j in sublists) # printing result print("The split lists are : ", split_list)
Đầu ra
Chạy đoạn mã trên cho chúng ta kết quả sau -
Given list : ['Mon', 'Tue', 'Wed', 6, 7, 'Thu', 'Fri', 11, 21, 4] The points of splitting : [2, 5, 8] The split lists are : [['Mon', 'Tue'], ['Wed', 6, 7], ['Thu', 'Fri', 11], [21, 4]]