如何在有序列表中的单词长度每次发生变化时输入换行符?

2024-04-20 14:10:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经创建了一个按降序排列的单词列表。每当列表中的单词长度发生变化时,我都要在后面加一个换行符。你知道吗

my_list = ['PAID','BATCH','CAKE','MY','CABLE']

my_list.sort(key = len, reverse = True)

print(' '.join(words_in_final))

电流输出

BATCH CABLE CAKE PAID MY

期望结果

BATCH CABLE

CAKE PAID

MY

或者

length 5
BATCH CABLE

length 4
CAKE PAID

length 2
MY

Tags: key列表lenmybatchsort单词length
3条回答

您可以使用^{}按长度对字符串进行分组,也可以按长度对字符串进行排序:

from itertools import groupby

[list(v) for _, v in groupby(sorted(my_list, key=len, reverse = True), key=len)]
# [['BATCH', 'CABLE'], ['PAID', 'CAKE'], ['MY']]

使用groupby

from itertools import groupby

my_list = ['PAID','BATCH','CAKE','MY','CABLE']

print(*(list(g) for k, g in groupby(sorted(my_list, key=len, reverse=True), key=len)), sep='\n')

# ['BATCH', 'CABLE']
# ['PAID', 'CAKE']
# ['MY']

使用itertools.groupby

例如:

from itertools import groupby


my_list = ['PAID','BATCH','CAKE','MY','CABLE']
my_list.sort(key = len, reverse = True)

for l, v in groupby(my_list, len):
    print("length {}".format(l))
    print(" ".join(v))
    print()

输出:

length 5
BATCH CABLE

length 4
PAID CAKE

length 2
MY

相关问题 更多 >