如何解决在 Python 中,如何在列表理解中使用“break”
简单的例子是从两个字符串中获取前缀
s1 = "abcd666678"
s2 = "abcd777778"
是否可以使用列表理解来获得公共前缀 abcd
。我正在尝试如下,但是我得到 abcd78
,所有常见字符,如何在 abcd
"".join([s1[i] for i in range(min(len(s1),len(s2))) if s1[i]==s2[i]])
解决方法
使用 itertools.takewhile
和 zip
:
>>> from itertools import takewhile
>>> ''.join(x for x,_ in takewhile(lambda t: t[0] == t[1],zip(s1,s2)))
'abcd'
,
有一个内置函数可以满足您的需求:os.path.commonprefix
>>> import os
>>> s1 = "abcd666678"
>>> s2 = "abcd777778"
>>> os.path.commonprefix([s1,s2])
'abcd'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。