【问题标题】:How to return all list elements of a given length?如何返回给定长度的所有列表元素?
【发布时间】:2014-12-29 03:02:53
【问题描述】:

我正在尝试返回具有特定长度的单词。

到目前为止,这是我的代码。 words 是一个列表,size 是一个正整数。

def by_size(words, size)
    for word in words:
        if len(word) == size:

我不确定如何继续。 by_size(['a', 'bb', 'ccc', 'dd'], 2) 应该返回 ['bb', 'dd']。任何建议都会有很大帮助。

【问题讨论】:

    标签: python string list string-length


    【解决方案1】:

    我会使用列表推导:

    def by_size(words, size):
        return [word for word in words if len(word) == size]
    

    【讨论】:

    • +1,列表推导优于使用 sorted、filter、map 和简单的 for 循环。
    【解决方案2】:
    return filter(lambda x: len(x)==size, words)
    

    有关该功能的更多信息,请参阅filter()

    【讨论】:

      【解决方案3】:

      你是这个意思吗:

      In [1]: words = ['a', 'bb', 'ccc', 'dd']
      
      In [2]: result = [item for item in words if len(item)==2]
      
      In [3]: result
      Out[3]: ['bb', 'dd']
      

      【讨论】:

        【解决方案4】:
        def by_size(words,size):
            result = []
            for word in words:
                if len(word)==size:
                    result.append(word)
            return result
        

        现在调用如下函数

        desired_result = by_size(['a','bb','ccc','dd'],2)
        

        desired_result 将是['bb', 'dd']

        【讨论】:

        • 我觉得这很好。如果我想强制执行我的前提条件,即“words 是一个字符串列表。size 是一个正整数”,我需要修改什么吗?
        • 是的,您可以通过以下修改强制执行您的先决条件:if size>-1 and if isinstance(word, str):
        【解决方案5】:

        假设您想稍后使用它们,然后将它们作为列表返回是一个好主意。或者只是将它们打印到终端。这真的取决于你的目标是什么。你可以去 list (或任何变量名)。在 if 语句中附加来执行此操作。

        【讨论】:

        • OP 在他的问题中说明了他的目标 - 他想返回一个列表。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-10
        • 1970-01-01
        • 2018-01-20
        • 2014-06-17
        • 1970-01-01
        • 2021-09-19
        相关资源
        最近更新 更多