虽然我认为它在技术上可能依赖于实现,但我想知道Python 2中的字符串上的reversed
是否作为生成器对象,只是从结束字符开始向后移动指针并且不执行某些操作否则就像首先在内存中反转整个字符串一样低效。这主要是好奇心,所以我可以更好地理解Python!
对于某些上下文,我编写了以下is_palindrome
函数,我认为这个函数在操作总数方面效率最高,而不是完全不兼容。这是假设上述情况,假设延迟评估,并假设all
短路。
from itertools import izip, islice
def is_palindrome(s):
mid_idx = len(s) // 2
return all(f == b for f, b in izip(islice(s, 0, mid_idx), islice(reversed(s), 0, mid_idx)) )