pages=[(1,1),(3,3),(4,7),(8,)]
def find_page(pages,page):
for p in pages:
if len(p)==1:
if page >= p[0]:
return True
else:
break
if p[0]==p[1]:
if page==p[0]:
return True
elif page >= p[0] and page <= p[1]:
return True
import itertools
def parse_ranges(ranges):
for chunk in ranges.split(', '):
if '-' not in chunk:
chunk = chunk + '-' + chunk # Turns 7 into 7-7
start, end = chunk.split('-')
if end:
yield from range(int(start), int(end) + 1)
else:
yield from itertools.count(int(start))
迭代时,可以强制执行最大页码:
^{pr2}$
或者分开做:
def cap(iterable, maximum):
for n in iterable:
if n > maximum:
break
yield n
pages = list(cap(parse_ranges('1, 3, 4-7, 9-'), 20))
请原谅我用元组列表作为页面的愚蠢尝试
我会用发电机:
迭代时,可以强制执行最大页码:
^{pr2}$或者分开做:
如果我正确地理解了您的问题,您可以使用元组列表。
(1,1)
表示第1页,(4, 7)
表示第4、5、6和7页。棘手的部分是表示“从这一页到最后”。但是,如果您可以访问页数,可以使用float("inf")
来解决这个问题。然后展平函数如下所示:相关问题 更多 >
编程相关推荐