编写此代码的更好方法是?

时间:2019-09-16 15:37:16

标签: python performance data-structures structure performance-testing

这是一个简单的代码,用于查找并打印第一个出现的最后一个“ zip”的位置,因此,如果找不到“ zip”,或者仅出现一次,则应打印-1。我写了两个可以做相同事情的代码,我想知道哪个是更好的代码,以及为什么以及如何对其进行改进(除了添加注释)。

起初我写了这段代码

text = 'all zip files are zipped'
indicator = 0
zip_position = text.find("zip" , indicator)
printer = zip_position
cycles = 0
printer_confirmation = 0
while zip_position != -1:
    printer = zip_position
    zip_position = text.find("zip" , indicator)
    indicator = zip_position + 1
    if printer > zip_position and cycles > 1:
        print printer
        printer_confirmation = 1
    cycles += 1
if cycles < 3 and printer_confirmation != 1:
        print -1

然后我在此行的提示之后编写了第二个代码: “ print(text.find('zip',text.find(” zip“)+ 1))”

我的完整代码:

text = "all zip files are zipped"
indicator = 1
zip_position = (text.find('zip', text.find("zip")+indicator))
while zip_position != -1:
    zip_position = (text.find('zip', text.find("zip")+indicator))
    indicator += 1
if zip_position == -1 and text.find("zip" , text.find("zip")+(indicator - 2)) > text.find('zip'):
        indicator -= 2
zip_position = (text.find('zip', text.find("zip")+indicator))
print zip_position

我可以看到第一个代码更大,但是我不知道这是否是更好的编码方式。如果代码短一点,总会更好吗? 请告诉我您哪种方法更好。

两个代码都给出相同的结果,没有错误。

1 个答案:

答案 0 :(得分:0)

实际上您可以编写单行代码

indicator = text.rfind('zip') if text.count('zip')>1 else -1