对于什么应该是“没脑子”的LC有问题。
以下代码段:
def daterange(start_date, end_date):
for n in range((end_date - start_date).days):
yield start_date + dt.timedelta(n)
def get_workdays_between_dates(start_date, end_date):
return [x in daterange(start_date, end_date) if x.date.weekday() in range(0,7)]
Python barfs解析函数get_workdays_between_dates()时出现'SyntaxError:无效语法错误'。虽然看起来不错......
代码出了什么问题?
答案 0 :(得分:6)
x
是什么? :)是的,这是一个无效的语法,你错过了for
部分。
[x for x in daterange(start_date, end_date) if x.date.weekday() in range(0,7)]
答案 1 :(得分:0)
除语法错误外,该行还有三个问题。鉴于x
似乎引用datetime
对象:
问题1:x.date
是方法,而不是属性
>>> import datetime
>>> x = datetime.datetime.now()
>>> x
datetime.datetime(2012, 2, 19, 9, 23, 53, 136000)
>>> x.date.weekday()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'builtin_function_or_method' object has no attribute 'weekday'
>>> x.date()
datetime.date(2012, 2, 19)
>>> x.date().weekday()
6
问题2:.date
是多余的
>>> x.weekday()
6
问题3:在我看来,x.weekday() in range(0,7)
始终是True
。也许你的意思是:
# initialisation
NON_WEEKEND_DAYS = set(range(0, 5))
# as needed
... x.weekday() in NON_WEEKEND_DAYS ...