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不想要的。