将字符串映射到对列表中

jon*_*ida 3 python python-3.x map-function

我有一个for循环遍历一个字符串并返回每个字符对和下一个字符:

>>> word = 'abcdef'
>>> for i in range(len(word)-1):
...     print word[i:i+2]
...
ab
bc
cd
de
ef
Run Code Online (Sandbox Code Playgroud)

是否可以使用地图/滤镜组合来编写它?我在弄清楚如何获得下一个角色而不是使用时遇到了问题i+2.

我试图将这个词传递两次,将它们映射到一起,如下所示:

>>> word = 'abcdef'
>>> map(lambda x, y: x+y, word, word[1:])
Run Code Online (Sandbox Code Playgroud)

但我不确定如何避免str和None的连接错误:

>>> map(lambda x, y: x+y, word, word[1:])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <lambda>
TypeError: cannot concatenate 'str' and 'NoneType' objects
Run Code Online (Sandbox Code Playgroud)

Jor*_*aza 5

这解决了您的问题:

list(map(lambda x, y: x+y, word[:-1], word[1:]))
Run Code Online (Sandbox Code Playgroud)

只是忽略第一个可迭代的单词的最后一个元素(单词[: - 1])