在列表中查找*所有*最短字符串

2024-04-29 04:37:33 发布

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

我想打印列表中最短的字符串。 例如,以下各项的输出:

names=["Hans", "Anna", "Vladimir", "Michael", "Ed", "Susan", "Janice", "Jo"]

将是

"Ed", "Jo"

输出

names=["Hans", "Anna", "Vladimir", "Michael", "Ed", "Susan", "Janice", "Jo", "Al"]

将是:

"Ed", "Jo", "Al"


[x for x in names if x==min(names, key=len)]

只会得到其中一个,但在有多个的情况下不会有帮助


Tags: 字符串in列表forifnamesaljo
3条回答

首先找到最短字符串的长度:

shortest = min(map(len, names))

现在只需找到所有具有该长度的字符串:

print([name for name in names if len(name) == shortest])

len作为key传递给min方法并获取最小字符串的长度,然后使用列表理解作为:

names=["Hans", "Anna", "Vladimir", "Michael", "Ed", "Susan", "Janice", "Jo"]
smallest_len = len(min(names, key=len))
smallest = [name for name in names if len(name) == smallest_len]
names = ["Hans", "Anna", "Vladimir", "Michael", "Ed", "Susan", "Janice", "Jo"]
smallest_len = len(min(names, key=len))
shorts = []
for name in names:
    if len(name) == smallest_len:
        shorts.append(name)
print(shorts)

相关问题 更多 >