我目前正在网上学习Python2.7。问题之一是我必须从一个基于字符列表的字符串中删除一个字符。在
我所做的是:
def getAvailableLetters(letters):
alphabet = string.ascii_lowercase
reduced_alphabet = ''
for char in alphabet:
if char not in lettersGuessed:
reduced_alphabet += char
return reduced_alphabet
我了解到没有字符串方法可以直接从字符串中删除字符,因为它们是不可变的,所以我提出了这个方法。我已经成功地提交了一个正确的答案,但我不太满意,因为我觉得有一种更有效的方法来做。在
最快的方法是在此处使用
str.translate
:如果
lettersGuessed
已经是字符串,则删除''.join
调用。在与
^{pr2}$str.join
和filter
相比的计时结果,取自@thefourtheye的溶液:输出:
最有效的方法是使用^{} 将字符序列转换为新字符串:
这避免了在循环的每次迭代中都创建一个新的string对象;相反,新字符串只创建一次。在
您可以像这样使用list comprehension来过滤
lettersGuessed
中的字符输出
^{pr2}$或者,您可以像这样使用filter函数
输出
^{pr2}$编辑:性能比较
在我的机器上输出
结果表明,
list comprehension
方法优于filter
方法。在相关问题 更多 >
编程相关推荐