使用Python范围和日历检查闰年
诺布问题。是否有一种更理想的方法可以同时使用范围和日历来表示范围。如果我的研究范围内的任何一年都是闰年,那么我希望建立一个真实的打印使用Python范围和日历检查闰年,python,python-2.7,Python,Python 2.7,诺布问题。是否有一种更理想的方法可以同时使用范围和日历来表示范围。如果我的研究范围内的任何一年都是闰年,那么我希望建立一个真实的打印 year = calendar.isleap(range(2016,2036)) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python2.7/calendar.py", line 99, in isle
year = calendar.isleap(range(2016,2036))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/calendar.py", line 99, in isleap
return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)
TypeError: unsupported operand type(s) for %: 'list' and 'int'
列表理解有助于做到这一点
leap_years = [year for year in range(2016, 2036) if calendar.isleap(year)]
如果您更喜欢map/reduce/filter方法,那么过滤器也是如此
leap_years = filter(calendar.isleap, range(2016, 2036))
应该优先选择前者,除非您有充分的理由使用过滤器提示:您可能没有
注意,这会告诉你哪些年份是闰年,如果有的话,而不是布尔值有闰年或没有闰年。请参阅fuglede的布尔响应。列表理解有助于实现这一点
leap_years = [year for year in range(2016, 2036) if calendar.isleap(year)]
如果您更喜欢map/reduce/filter方法,那么过滤器也是如此
leap_years = filter(calendar.isleap, range(2016, 2036))
应该优先选择前者,除非您有充分的理由使用过滤器提示:您可能没有
注意,这会告诉你哪些年份是闰年,如果有的话,而不是布尔值有闰年或没有闰年。请参阅fuglede的布尔响应。听起来您想使用Python内置的
In [1]: import calendar
In [2]: test1 = any(calendar.isleap(y) for y in range(2016, 2036))
In [3]: test2 = any(calendar.isleap(y) for y in range(2097, 2103))
In [4]: print(test1)
True
In [5]: print(test2)
False
听起来你想利用Python的内置功能
In [1]: import calendar
In [2]: test1 = any(calendar.isleap(y) for y in range(2016, 2036))
In [3]: test2 = any(calendar.isleap(y) for y in range(2097, 2103))
In [4]: print(test1)
True
In [5]: print(test2)
False
蟒蛇式的方式
>>> import calendar
>>> any(map(calendar.isleap, range(2016, 2036)))
True
蟒蛇式的方式
>>> import calendar
>>> any(map(calendar.isleap, range(2016, 2036)))
True
这也很有趣:leap_years=anycalendar.isleapyear for year in Range 2016,2036年,由于OP提到时返回True,您还可以获得布尔值答案的布尔值,因为空列表返回False,而元素列表返回True。这也很有趣:leap_years=anycalendar.isleapyear for year in Range 2016,2036年,由于它返回True作为OP的引用,您还可以获得布尔答案的boolleap_年,因为空列表返回False,而包含元素的列表返回True。