【问题标题】:Python vowel filter, appending to stringPython元音过滤器,附加到字符串
【发布时间】:2014-04-24 20:10:53
【问题描述】:

我环顾四周,看到了一百万零一个这样的问题,但我不知道我是如何尝试这样做的,所以请温柔一点!

基本上,我试图将句子中的元音添加到 list??? 并打印列表,所有这些都是通过使用一个名为 isVowel 的 lambda 和一个名为 vowelFilter 的函数来实现的。 p>

我真的不确定如何使用 lambda 来执行此操作,而且到目前为止我所做的似乎不起作用,这是我的代码;

sentence = "The quick brown fox jumps over the bridge"
vowels = "aeiouAEIOU"
finalVowel = []
def vowelFilter(sentence):
        for letter in sentence:
                if letter in vowels:
                        finalVowel.append(letter)
        return finalVowel

你们能解释一下吗?再次,我很清楚这已经被问了 1000000000 次,但没有什么是 100% 像我的,所以请善待!

谢谢

【问题讨论】:

  • 为什么要/需要使用lambda?对我来说听起来像XY problem。
  • 在我的电脑上运行良好。怎么回事?
  • 嗨 Lukas,我被特别要求使用 lambda :) 和 Sheng 真的吗?!根本不适合我!

标签: python list function lambda


【解决方案1】:

您可以使用带有条件的列表推导式。不需要 lambda:

>>> l = [v for v in sentence if v in vowels]
>>> print l
['e', 'u', 'i', 'o', 'o', 'u', 'o', 'e', 'e', 'i', 'e']

【讨论】:

    【解决方案2】:

    只是

    finalVowel = [x for x in sentence if x in vowels]
    

    希望对你有帮助

    【讨论】:

      【解决方案3】:

      在这里使用 lambda 表达式不是很 Python,但如果你必须:

      sentence = "The quick brown fox jumps over the bridge"
      vowels = "aeiouAEIOU"
      finalVowel = []
      
      # Return True if arg is in vowels; otherwise, return False
      isVowel = lambda arg: arg in vowels
      
      def vowelFilter(sentence):
          for letter in sentence:
              if isVowel(letter):  # Call the lambda to test if letter is a vowel
                  finalVowel.append(letter)
          return finalVowel
      
      print (vowelFilter(sentence))
      

      来自docs:

      lambda_expr ::= "lambda" [parameter_list]: expression

      old_lambda_expr ::= "lambda" [parameter_list]: old_expression

      Lambda 表达式(有时称为 lambda 形式)具有相同的 作为表达式的句法位置。它们是创建的简写 匿名函数;表达式 lambda 参数:表达式 产生一个函数对象。未命名的对象表现得像一个函数 用

      定义的对象

      def name(arguments): return expression

      请参阅函数定义部分了解参数列表的语法。 请注意,使用 lambda 表达式创建的函数不能包含 声明。

      【讨论】:

      • 您好 iCodez,感谢您的回复。我现在不知道这是否是我的笔记本电脑,但我已经完全按照您的显示方式使用了 lambda,但仍然没有打印任何内容?我错过了什么吗?
      • @RyanJones - 查看我的编辑。我想你忘记在脚本末尾调用函数了。
      • 如果可以使用函数,为什么还要使用 lambda?
      • @CoDEmanX - 最有可能用于教学 lambdas 的学校作业。
      • 特别是 - 这是一个过去的论文问题,需要修改:)
      【解决方案4】:

      如果必须使用 lambda,那么您可以这样做(这与其他两个答案没有什么不同)

      vowel_filter = lambda sent: [x for x in sent if x in vowels]
      vowel_filter(sentence)
      >>> ['e', 'u', 'i', 'o', 'o', 'u', 'o', 'e', 'e', 'i', 'e']
      
      finalVowel = vowel_filter(sentence)
      print finalVowel
      >>> ['e', 'u', 'i', 'o', 'o', 'u', 'o', 'e', 'e', 'i', 'e']
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-21
        • 1970-01-01
        • 2012-03-19
        • 2020-02-04
        • 2019-02-13
        • 2023-03-22
        相关资源
        最近更新 更多