#!/usr/bin/python
word = "abaccea"
letter = "a"
def single_remove(word, letter):
"""Remove character c from text t one at a time
"""
indexes = [c for c in xrange(len(word)) if word[c] == letter]
return [word[:i] + word[i + 1:] for i in indexes]
print single_remove(word, letter)
你可以试试下面的脚本。它提供了一个简单的函数来执行您的要求。列表理解的使用很值得学习。在
返回
['baccea', 'abccea', 'abacce']
干杯
下面是一个快速的方法:
通过简单地将方括号替换为圆括号,可以将其转换为生成器。在
我想说你的方法听起来不错-这是一个相当有效的方法,读者会很清楚你在做什么。在
然而,一个稍微不那么优雅但可能更快的替代方法是使用^{} 函数的
start
参数。在find函数可能在C中得到了高度优化,因此与在Python中迭代字符串中的字符相比,这可能会提高性能。你是否想这样做取决于你是在追求效率还是优雅。我建议首先采用简单明了的方法,只有在性能分析表明效率是一个重要问题时才对其进行优化。在
以下是一些性能度量,表明使用
^{pr2}$find
的代码可以运行得更快:相关问题 更多 >
编程相关推荐