当前位置: 首页 > 面试题库 >

列表中最长的字符串

邢凌
2023-03-14
问题内容

我正在做一个从列表中返回最长字符串值的函数。当只有一个包含最多字符的字符串时,我的代码有效。如果有多个字符串,我尝试使其打印所有最长的字符串,并且我不希望重复它们。当我运行它时,它只返回“
hello”,而我希望它也返回“ ohman”和“ yoloo”。我觉得问题就在if item not list:眼前,但是我已经尝试了所有方法,但是没有用。

list = ['hi', 'hello', 'hey','ohman', 'yoloo', 'hello']
def length(lists):
    a = 0 
    answer = ''
    for item in lists:
        x = len(item) 
    if x > a:
        a = x
        answer = item
    elif x == a:
        if item not in list:
            answer = answer + ' ' + item
    return answer
print length(list)

问题答案:

首先 ,我们可以在列表中找到任何字符串的最大长度:

stringlist = ['hi', 'hello', 'hey','ohman', 'yoloo', 'hello']
#maxlength = max([len(s) for s in stringlist])
maxlength = max(len(s) for s in stringlist)  # omitting the brackets causes max 
                                             # to operate on an iterable, instead
                                             # of first constructing a full list
                                             # in memory, which is more efficient

一点解释。这称为列表理解,它使您可以将一个列表 理解 为另一列表。该代码的 [len(s) for s in stringlist]意思是“通过获取来生成类似列表的对象,stringlist而对于s该列表中的每个对象,请给我len(s)(该字符串的长度)。

现在我们有了清单[2, 5, 3, 5, 5, 5]。然后,我们在其max()上调用内置函数,该函数将返回5

现在 您已达到最大长度,可以过滤原始列表:

longest_strings = [s for s in stringlist if len(s) == maxlength]

就像英语中的读法一样:“对于字符串列表s中的每个字符串s,如果len(s)等于,请给我该字符串maxlength。”

最后
,如果要使结果唯一,则可以使用set()构造函数来生成唯一集:

unique_longest_strings = list(set(longest_strings))

(我们呼吁list()在删除重复项后将其转回列表。)

归结为:

ml = max(len(s) for s in stringlist)
result = list(set(s for s in stringlist if len(s) == ml))

注意 :请勿使用名为的变量list,因为它会覆盖list类型名称的含义。



 类似资料:
  • 问题内容: 我有一个可变长度的列表,正在尝试寻找一种方法来测试当前正在评估的列表项是否是列表中包含的最长字符串。我正在使用Python 2.6.1 例如: 当然,有一个简单的列表理解功能很简短,但我却忽略了它? 问题答案: 从Python文档本身,您可以使用:

  • 我需要找到字符串中最长的序列,并警告序列必须重复三次或更多次。例如,如果我的字符串是: fdwaw4helloworld vcdv1c3xcv3xcz1sda21f2sd1ahelloworld gafgfa4564534321fadghelloworld 然后我希望返回值“helloworld”。 我知道有几种方法可以做到这一点,但我面临的问题是,实际的字符串太大了,所以我真的在寻找一种能够及时

  • 问题内容: 获取最长单词长度的更Python方式是什么: 要么: 或者是其他东西? 是字符串列表。我发现我经常需要这样做,并且在用几个不同的样本量进行计时之后,第一种方法似乎始终如一地更快,尽管在票面价值上似乎效率不高(被叫两次的冗余似乎无关紧要,在第二种方法中发生的更多)这种形式的C代码?)。 问题答案: 我认为两者都可以,但是我认为除非速度是最易读的大考虑。 当我看着它们时,我花了更长的时间才

  • 问题内容: 有没有比下面的示例更快的方法来找到Pandas DataFrame中最长字符串的长度? 使用IPython的进行计时大约需要10秒钟。 问题答案: DSM的建议似乎是您无需进行一些手动微优化就能获得的最佳效果: 请注意,显式使用该方法似乎并没有多大改进。如果您不熟悉IPython(这是非常方便的语法所来自的地方),我绝对建议您尝试一下,以快速测试此类内容。 更新 添加了屏幕截图:

  • 我有一个tweet数据库,其中实际的tweet文本在一个名为“text”的字段中。 我想知道如何查询并显示最长的tweet?我一直在想也许.排序或.长度或诸如此类的东西,但我环顾四周,到目前为止还没有找到任何有用的东西。 救命啊!谢谢!

  • 问题内容: 这个问题与Python类似-在字典中查找最长(最多单词)键-但我需要纯字符数。 输入示例: 输出: 问题答案: 替代方法,与@jamylak的解决方案一样快,并且使用更多的pythonic: 查看比较: