Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python范围和日历检查闰年_Python_Python 2.7 - Fatal编程技术网

使用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。