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

Python Phân loại danh sách đã cho theo kích thước chuỗi

Hãy xem xét một danh sách chứa nhiều chuỗi có độ dài khác nhau. Trong bài viết này, chúng ta sẽ xem cách kết hợp các phần tử đó thành các nhóm trong đó các chuỗi có độ dài bằng nhau trong mỗi nhóm.

Với vòng lặp for

Chúng tôi thiết kế một vòng lặp for sẽ lặp lại qua mọi phần tử của danh sách và chỉ xảy ra với danh sách mà độ dài của nó khớp với độ dài của phần tử hiện có.

Ví dụ

listA = ['Monday','Thursday','Friday','Saturday','Sunday']
# Given list
print("Given list : \n",listA)
# Categorize by string size
len_comp = lambda x, y: len(x) == len(y)
res = []
for sub_list in listA:
   ele = next((i for i in res if len_comp(sub_list, i[0])), [])
   if ele == []:
      res.append(ele)
   ele.append(sub_list)
# Result
print("The list after creating categories : \n",res)

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

Given list :
['Monday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
The list after creating categories :
[['Monday', 'Friday', 'Sunday'], ['Thursday', 'Saturday']]

Với sắp xếp và phân nhóm

Trong cách tiếp cận này, trước tiên, chúng tôi bắn tất cả các phần tử theo độ dài của chúng và sau đó áp dụng nhóm theo chức năng là một phần của mô-đun itertools.

Ví dụ

from itertools import groupby
listA = ['Monday','Thursday','Friday','Saturday','Sunday']
# Given list
print("Given list : \n",listA)
# Categorize by string size
get_len = lambda x: len(x)
sub_list = sorted(listA, key = get_len)
res = [list(ele) for i, ele in groupby(sub_list, get_len)]
# Result
print("The list after creating categories : \n",res)

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

Given list :
['Monday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
The list after creating categories :
[['Monday', 'Friday', 'Sunday'], ['Thursday', 'Saturday']]