如何在一个句子中获得单词的长度?

Rey*_*ymy 9 python

我试图在一个句子中得到每个单词的长度.我知道你可以使用"len"函数,我只是不知道如何得到每个单词的长度.

而不是这个

>>> s = "python is pretty fun to use"
>>> len(s)
27
>>>
Run Code Online (Sandbox Code Playgroud)

我想得到这个

6, 2, 6, 3, 2, 3
Run Code Online (Sandbox Code Playgroud)

这是每个单词的实际长度.

Ósc*_*pez 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
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用列表推导来获得相同的效果:

[len(x) for x in s.split()]
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,结果都是一个列表,其中包含句子中每个单词的长度:

[6, 2, 6, 3, 2, 3]
Run Code Online (Sandbox Code Playgroud)


iCo*_*dez 8

使用1和:mapstr.split

>>> s = "python is pretty fun to use"
>>> map(len, s.split())
[6, 2, 6, 3, 2, 3]
>>>
Run Code Online (Sandbox Code Playgroud)

1 注意:map在Python 3中返回一个迭代器.如果您使用的是该版本,您可能需要将其放入list以获取Python 2 map返回的整数列表:

>>> # Python 3 interpreter
>>> s = "python is pretty fun to use"
>>> map(len, s.split())
<map object at 0x02364ED0>
>>> list(map(len, s.split()))
[6, 2, 6, 3, 2, 3]
>>>
Run Code Online (Sandbox Code Playgroud)


agc*_*nti 7

用这个:

s = "python is pretty fun to use"
[len(x) for x in s.split()]
Run Code Online (Sandbox Code Playgroud)

示例输出:

>>> [len(x) for x in s.split()]
[6, 2, 6, 3, 2, 3]
Run Code Online (Sandbox Code Playgroud)

背景中发生了什么?

s.split() 打破字符串中的空格并返回列表中句子中的每个单词:

>>> s.split()
['python', 'is', 'pretty', 'fun', 'to', 'use']
Run Code Online (Sandbox Code Playgroud)

然后我们取出len()每个单词来得到单词的长度.之后,我们获取每个长度并将其附加到列表中,以便可以方便地返回结果.

这一切都发生在这个列表理解中:

[len(x) for x in s.split()]
Run Code Online (Sandbox Code Playgroud)

还有点迷茫吗?这在概念上是相同的,只是更明确地分解:

results = []
for x in s.split():
    word_length = len(x)
    results.append(word_length)
print results 
Run Code Online (Sandbox Code Playgroud)

如果你喜欢它们单独打印出来,就像你的问题一样,请使用:

for x in [len(x) for x in s.split()]: 
    print x
Run Code Online (Sandbox Code Playgroud)