python - 从 list 内的子列表中提取最长的字符串。 Python

标签 python string list search greatest-n-per-group

所以我有一个子列表列表,并且在子列表中,有字符串。

字符串通常具有不同的长度,但也可以具有相同的长度。

下面是列表的示例

sequences = [['aaa'],['aaaa','bb'],[],['aaaaaa','bb','cccccc']]

我想找到一种方法从每个列表中提取最长的字符串,如果有两个同样长,则取出这两个字符串

example_output = [['aaa'],['aaaa'],[],['aaaaaa','cccccc']]

通常我会在 for 循环中设置一个阈值,如果它比某个长度长,则附加到一个列表,然后在每次迭代后将其附加到一个列表。 。 。但在这种情况下我没有阈值

如果可能的话,我想尝试避免使用 lambda 和函数,因为这将在另一个函数中

最佳答案

您可以使用迄今为止看到的最长字符串的长度作为阈值(下面代码中的maxlen):

def get_longest(seq):
    maxlen = -1
    ret = []
    for el in seq:
        if len(el) > maxlen:
            ret = [el]
            maxlen = len(el)
        elif len(el) == maxlen:
            ret.append(el)
    return ret

sequences = [['aaa'],['aaaa','bb'],[],['aaaaaa','bb','cccccc']]
example_output = list(map(get_longest, sequences))
print(example_output)

这会产生:

[['aaa'], ['aaaa'], [], ['aaaaaa', 'cccccc']]

关于python - 从 list 内的子列表中提取最长的字符串。 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15837395/

相关文章:

python - 一次迭代列表中的每 2 个元素

python - 如何修复列表索引超出范围?

python - 如何在 Python 中解析十六进制或十进制整数

python - 在python中转置一个数字表

java - 将 Java 翻译成 Python——使用 PEM 证书文件签署字符串

string - 将 SMS 分成 30 个字符大小的 SMS

c - c 中的二进制数和字符串表示

regex - 如何从Excel单元格中仅提取5位数字的字符串?

python - 如何有效地访问另一个可迭代的 Python 可迭代索引证明

python - 如何正确使用 numpy as_strided(来自 np.stride_tricks)?