Python - 执行时间比平时长

时间:2018-02-01 14:24:27

标签: python python-2.7

我决定制作一个简单的python代码,以便轻松获得以m/d/yyyy格式输入日期的那一天。我使用excel将日期上传到.txt文件中。新的.txt文件包含从1/1/201812/31/2022的日期,相应的日期以逗号分隔。

该程序运行正常,但需要将近一分钟才能得到结果。如何更改代码以缩短执行时间?

这是我的代码:

def getList():
   name = 'Calendar2018.txt'
   dates = open(name, 'r')
   newList = []
   for line in dates:
       newList.append(line)
   for i in range(0,len(newList)):
       newList[i] = newList[i].split(',')
   for i in range (0,len(newList)):
       for x in range (0,len(newList[i])):
          newList[i][x] = (str(newList[i][x]).translate(None,'"')).strip()
   return newList

userInp = raw_input("Enter a date: ")
for i in range(0,len(getList())):
    if (getList()[i][0]) == userInp:
        print userInp + " falls on " + getList()[i][1] + "."

1 个答案:

答案 0 :(得分:3)

问题是您一次又一次地呼叫getList。相反,调用它一次并将结果存储在列表中:

all_the_dates = getList()
userInp = raw_input("Enter a date: ")
for i in range(0,len(all_the_dates)):
    if (all_the_dates[i][0]) == userInp:
        print userInp + " falls on " + all_the_dates[i][1] + "."

或更短,直接迭代列表而不是使用range索引:

for date, weekday in all_the_dates:
    if date == userInp:
        print userInp + " falls on " + weekday + "."

话虽如此,你根本不需要那个“日历”文件。只需使用Python的datetime.date API和strftime即可获得工作日。

>>> import datetime
>>> userinp = "2/1/2018"
>>> m,d,y = map(int, userinp.split("/"))
>>> datetime.date(y, m, d).strftime("%A")
'Thursday'