python 如何计算列表元素中的字数
python how to count words in a list element
下面的代码 returns 列表:
[['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)
我假设您想执行以下操作:
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]
用于计算每个元素中的单词
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]
如果您所有的输入元素都是列表,并且所有的分隔符都是空格,那么您可以在不导入任何内容的情况下执行此操作:
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]
下面的代码 returns 列表:
[['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)
我假设您想执行以下操作:
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]
用于计算每个元素中的单词
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]
如果您所有的输入元素都是列表,并且所有的分隔符都是空格,那么您可以在不导入任何内容的情况下执行此操作:
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]