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

用 sort 和 groupby

此方法中,我們首先按元素長度對所有元素進行排序,然後應用作為 itertools 模組一部分的 group by 函式。

示例

 即時演示

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

更新於:2020 年 7 月 9 日

156 人次瀏覽

快速啟動你的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.