Computer >> Máy Tính >  >> Lập trình >> Python

Tách danh sách tùy chỉnh bằng Python

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]]