【问题标题】:Count each list element with min 4 chars [duplicate]用最少 4 个字符计算每个列表元素 [重复]
【发布时间】:2014-07-31 02:09:13
【问题描述】:

我是 Python 初学者,在这里需要一些帮助。我有一个包含一堆单词的字符串,将它们放入一个列表中,并想计算每个包含 4 个或更多字符的单词。 我找到了计算所有元素的各种方法,但不是有条件的。 感谢您提供我没有找到的任何帮助或教程。

【问题讨论】:

  • 您似乎希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的程序员编写代码,但他们通常只会在发布者已经尝试自己解决问题时提供帮助。展示这项工作的一个好方法是包含您迄今为止编写的代码、示例输入(如果有的话)、预期输出和您实际获得的输出(控制台输出、堆栈跟踪、编译器错误 - 不管是什么适用的)。您提供的详细信息越多,您可能收到的答案就越多。

标签: python list python-2.7 count


【解决方案1】:

使用生成器表达式过滤您的列表;此处使用sum() 统计匹配数比先创建过滤列表更有效:

longer_words_count = sum(1 for word in sentence.split() if len(word) >= 4)

我假设你还没有用单词分割字符串; str.split() 做得很好。

你可以这样做:

longer_words_count = sum(len(word) >= 4 for word in sentence.split())

因为 Python 的 boolean 类型是 int 的子类; True == 1False == 0。然而,我不喜欢使用这个技巧,因为这种关系是历史的而不是明确的。

演示:

>>> sentence = 'The quick brown fox jumps over the lazy dog'
>>> sum(1 for word in sentence.split() if len(word) >= 4)
5
>>> sum(len(word) >= 4 for word in sentence.split())
5

【讨论】:

  • 为什么不sum(len(word) >= 4 for word in sentence.split())
  • @LevLevitsky:显式优于隐式;布尔值确实是 int 子类,但这并不明确。
  • 效果很好。我已经拆分了字符串。我只是不知道如何处理这种情况。谢谢!
【解决方案2】:

一种简单的方法是使用 split 来获取一个列表,然后计算有多少项目的长度大于或等于 4。

a="abc abc abcde"
listCount=a.split(" ")
counter=0
for item in listCound:
    if len(item)>=4:
        counter+=1
print (counter)

【讨论】:

    【解决方案3】:

    另一种方法是创建一个子列表并设置其长度,可能效率较低,但可以提供一些更有用的信息,这取决于您想要什么:

    sub_list = [elem for elem in list if len(elem)>4]
    len(sub_list)
    

    【讨论】:

      猜你喜欢
      • 2019-12-07
      • 2020-11-05
      • 2022-10-15
      • 2018-07-28
      • 1970-01-01
      • 2017-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多