【问题标题】:python how to count words in a list elementpython如何计算列表元素中的单词
【发布时间】:2020-01-26 21:15:43
【问题描述】:

下面的代码返回一个列表:

[['We test robots'], ['Give us a try'], [' ']]

现在我需要计算每个元素中的单词, 我如何在不导入任何包的情况下在 Python 中实现这一点。在上面我应该得到三个列表元素的 3,4 和 1。 谢谢

import re
S ="We test robots.Give us a try? "

splitted = [l.split(',') for l in (re.split('\.|\!|\?',S)) if l]

print (splitted)

【问题讨论】:

标签: python list counting


【解决方案1】:

有多种方法可以做到这一点,这里有两种:

# using map
list(map(lambda x: len(x[0].split()) if len(x[0]) > 1 else 1, l))

[3, 4, 1]

# using list comprehension
[len(x[0].split()) if len(x[0]) > 1 else 1 for x in l]

[3, 4, 1]

【讨论】:

  • 你的自我条件不能只是1,如[len(i[0].split()) if len(i[0]) > 1 else 1 for i in lst]
  • 嗯,我想是的,我们可以做到。
【解决方案2】:

我假设你想做这样的事情:

import re
S ="We test robots.Give us a try? "

splitted = [l.split(',') for l in (re.split('\.|\!|\?',S)) if l]

print(splitted)

for sentence in splitted:
    count = len(sentence[0].split())
    if not count and sentence[0]:
        count += 1
    print(count)

会打印:

[['We test robots'], ['Give us a try'], [' ']]
3
4
1

【讨论】:

    【解决方案3】:

    如果您的所有输入元素都是列表,并且所有分隔符都是空格,那么您可以在不导入任何内容的情况下执行此操作:

    input = [['We test robots'], ['Give us a try'], [' ']]
    output = []
    
    for item in input:
       output.append(len(item[0].split()))
    
    print(output)  # [3, 4, 0]
    

    如果你想让一个空项打印 1 而不是 0,只需检查值是否为 0。

    【讨论】:

      【解决方案4】:

      用于计算每个元素中的单词

      import re
      S ="We test robots.Give us a try? "
      
      splitted = [l.split(',') for l in (re.split('\.|\!|\?',S)) if l]
      
      item =[]
      for i in splitted:
          item.append(len(i[0].split()))
      
      print(item)
      

      输出将是 [3,4,0]

      【讨论】:

      • 喜欢这个,谢谢,对于像我这样的初学者来说易于阅读和理解:)
      • 这会导入正则表达式库,这是 OP 不想要的。
      【解决方案5】:

      只是练习...

      def word_counter(passlist):
          do_count = lambda x: len(x.split())
          result=[]
      
          for elem in passlist:
              if isinstance(elem, list):
                  result += [word_counter(elem)]
              elif isinstance(elem, str):
                  result += [do_count(elem)]
      
          return result
      
      print(word_counter([['We test robots'], ['Give us a try'], [' ']]))
      # output: [[3], [4], [0]]
      
      print(word_counter(['First of all', ['One more test'], [['Trying different list levels'], [' ']], 'Something more here']))
      # output: [3, [3], [[4], [0]], 3]
      

      【讨论】:

        猜你喜欢
        • 2020-05-25
        • 2023-02-25
        • 1970-01-01
        • 1970-01-01
        • 2011-05-07
        • 1970-01-01
        • 2018-01-05
        • 1970-01-01
        相关资源
        最近更新 更多