python如何计算列表元素中的单词数

python如何计算列表元素中的单词数,python,list,counting,Python,List,Counting,下面的代码返回一个列表: [['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)) i

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

[['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)

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

我假设你想做一些事情,比如:

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

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

# 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]

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

# 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]
用于计算每个元素中的单词

输出将是[3,4,0]

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


输出将是[3,4,0]

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

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。

如果所有输入元素都是列表,且所有分隔符都是空格,则无需导入任何内容即可执行此操作:

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。

只是练习一下

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]
只是练习

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]

如果您需要计算列表中每个元素的单词数,那么输出不是应该是3,4,0吗?这是否回答了您的问题?如果您需要计算列表中每个元素的单词数,那么输出不是应该是3,4,0吗?这是否回答了您的问题?你的自我条件不能是1吗,就像在
[len(i[0].split())中那样如果len(i[0]>1 else 1 for i in lst]
嗯,我想是的,我们可以做到。你的自我条件不能是1吗,就像
[len(i[0].split())如果len(i[0]>1 else 1 for i in lst]
嗯,我想是的,我们可以做到。我喜欢这个,谢谢,对于像我这样的初学者来说,易于阅读和理解:)这导入了正则表达式库,这是OP不想要的。喜欢这个,谢谢,对于像我这样的初学者来说,易于阅读和理解:)这导入了正则表达式库,这是OP不想要的。