如何解决有没有办法获取数组拆分之间数字的开始和结束?
抱歉,我什至不知道该问题的标题。
pagesToPrint = [2,3,4,5,7,8,9,12,14,15,16,17,18,19,20]
现在,仅打印2,7...20
有什么问题?
将一页或多页发送到打印机时,将花费一些时间来进行处理。因此,为了加快处理速度,最好只分批打印。假设不打印2-2
,3-3
,4-4
,而仅打印2-5
,我们就不能打印2-20
,因为它会打印页面6,10,11,13
,所以等等。上。
我并不真的在乎哪种编程语言,答案只是其背后的逻辑。 最终,我试图在AutoHotkey中解决此问题。
解决方法
您可以通过一些“自上而下”的思维来解决此问题。在理想的世界中,已经有一个可以调用的函数:split_into_consecutive_batches(pages)
。
您如何在高级别上描述其工作原理?基本上,这只是您的初始帖子和要求的更准确的措词!
“只要页面列表中有剩余页面,它就应该给我下一批。”
啊哈!
def split_into_consecutive_batches(pages):
batches = []
while pages:
batches.append(grab_next_batch(pages))
return batches
啊哈!还不错吧?总体上的大问题现在已简化为稍微更小,更简单的问题。我们如何 抢下一批?好吧,我们抓住了第一页。然后我们检查下一页是否是连续页。如果是这样,我们将其添加到批次中并继续。如果没有,我们认为批处理完成并停止:
def grab_next_batch(pages):
first_page = pages.pop(0) # Grab (and delete) first page from list.
batch = [first_page]
while pages:
# Check that next page is one larger than the last page in our batch:
if pages[0] == batch[-1] + 1:
# It is consecutive! So remove from pages and add to batch
batch.append(pages.pop(0))
else:
# Not consecutive! So the current batch is done! Return it!
return batch
# If we made it to here,we have removed all the pages. So we're done too!
return batch
应该这样做。虽然可以清理一点;也许您不喜欢从页面列表中删除项目的副作用。而不是在周围复制内容,您只需找出索引即可。我将其保留为练习:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。