假设我有一个这样的列表:
myList=['A','B','C','D','E','F','G','H','I','J','K']
因此,假设我想将此列表作为n批处理。如果是n = 3
,
我想要一个名为batchIdx
[(0,3),(4,7),(8,10)]
的列表,其中每个元组都指向myList的(start,end)
索引。
myList
可以是可变长度的。这不仅仅是将列表分成相同大小的块。就像使用divmod()
。
编辑:我实际上想创建一个索引到myList的列表。我会在程序的不同部分使用这些索引。
实施此方法的最佳方法是什么?
答案 0 :(得分:2)
根据问题编辑更新了答案:
这不仅仅是将列表分成相同大小的块。就像使用
一样divmod()
这是我的解决方案,它返回索引,将长度l
的列表分成n
个批次:
def slice_indices(l, n):
q, r = divmod(l, n)
step = q + 1 if r else q
return [(i, min(i+step, l)) for i in range(0, l, step)]
让我们先看一些指数:
>>> slice_indices(l=11, n=3)
[(0, 4), (4, 8), (8, 11)]
# We get 3 batches, index covers [0, 11] so we pass.
>>> slice_indices(l=30, n=4)
[(0, 8), (8, 16), (16, 24), (24, 30)]
# We get 4 batches, and index covers [0, 30], so we pass.
让我们看一下你的列表索引:
>>> [myList[slice(*s)] for s in slice_indices(l=11, n=3)]
[['A', 'B', 'C', 'D'], ['E', 'F', 'G', 'H'], ['I', 'J', 'K']]
并且不会突破n = 1
或n = l
>>> [myList[slice(*s)] for s in slice_indices(l=11, n=1)]
[['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K']] # 1 batch
>>> [myList[slice(*s)] for s in slice_indices(l=11, n=11)]
[['A'], ['B'], ['C'], ['D'], ['E'], ['F'], ['G'], ['H'], ['I'], ['J'], ['K']] # 11 batches
答案 1 :(得分:0)
Shell ("("my application.exe")
sendkeys.send = ("o")
sendkeys.send = ("p")
sendkeys.send = ("e")
sendkeys.send = ("n")
sendkeys.send = ("{ENTER}")