Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python 문자열 크기로 주어진 목록 분류

<시간/>

길이가 다른 많은 문자열을 포함하는 목록을 고려해 보겠습니다. 이 기사에서는 각 그룹에서 문자열의 길이가 같은 요소를 그룹으로 묶는 방법을 볼 것입니다.

for 루프 사용

목록의 모든 요소를 ​​반복하고 길이가 기존 요소의 길이와 일치하는 목록에만 발생하는 for 루프를 설계합니다.

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)

출력

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

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

정렬 및 그룹화 사용

이 접근 방식에서는 먼저 길이에 따라 모든 요소를 ​​촬영한 다음 itertools 모듈의 일부인 기능별로 그룹화를 적용합니다.

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)

출력

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

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