我试图在句子中得到每个单词的长度。我知道你可以使用“len”函数,我只是不知道如何得到每个单词的长度。
而不是这个
>>> s = "python is pretty fun to use"
>>> len(s)
27
>>>
我想得到这个
6, 2, 6, 3, 2, 3
这是每个单词的实际长度。
答案 0 :(得分:15)
尝试此操作,使用map()
对句子中的每个单词应用len()
,了解split()
会为句子中的每个单词创建一个列表:
s = "python is pretty fun to use"
map(len, s.split()) # assuming Python 2.x
list(map(len, s.split())) # assuming Python 3.x
或者,您可以使用list comprehension获得相同的效果:
[len(x) for x in s.split()]
在这两种情况下,结果都是一个列表,其中包含句子中每个单词的长度:
[6, 2, 6, 3, 2, 3]
答案 1 :(得分:8)
>>> s = "python is pretty fun to use"
>>> map(len, s.split())
[6, 2, 6, 3, 2, 3]
>>>
1 注意:map
在Python 3中返回一个迭代器。如果您使用的是该版本,则可能需要将其放在{{1}中获取Python 2 list
返回的整数列表:
map
答案 2 :(得分:7)
使用此:
s = "python is pretty fun to use"
[len(x) for x in s.split()]
示例输出:
>>> [len(x) for x in s.split()]
[6, 2, 6, 3, 2, 3]
s.split()
打破字符串中的空格并返回列表中句子中的每个单词:
>>> s.split()
['python', 'is', 'pretty', 'fun', 'to', 'use']
然后我们取每个单词的len()
来得到单词的长度。之后,我们获取每个长度并将其附加到列表中,以便可以方便地返回结果。
这一切都发生在list comprehension:
中[len(x) for x in s.split()]
还有点迷茫吗?这在概念上是相同的事情,只是更明确地分解:
results = []
for x in s.split():
word_length = len(x)
results.append(word_length)
print results
如果您希望将它们单独打印出来,就像在您的问题中一样,请使用:
for x in [len(x) for x in s.split()]:
print x
答案 3 :(得分:0)
iCodez是对的 - 但它需要从脚本表单中进行一些小的调整。
s = 'python is pretty fun to use'
li = list(map(len, s.split()))
然后输入shell或print语句:
print(li)