我试图在一个句子中得到每个单词的长度.我知道你可以使用"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)
>>> 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)
用这个:
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)
| 归档时间: |
|
| 查看次数: |
24902 次 |
| 最近记录: |