我正在将一些数据从 SqlAlchemy 选择迁移到项目 ID 的缓存中。
我正在尝试找出处理具有限制和偏移量的迁移函数的最佳方法。
我下面的代码工作正常。我担心的是它需要 7 行 - 通常当这样的事情需要几行时,这是因为我没有看到某些东西或者我忘记了或还没有学过关于 Python 的某些东西。
def sampling( selection, offset=0 , limit=None ):
if offset or limit:
if limit is not None:
limit = offset + limit
else:
limit = len(selection)
selection = selection[offset:limit]
return selection
ids = range(1,100)
print sampling(ids,1,20)
print sampling(ids,10,20)
print sampling(ids,90)
print sampling(ids,90,300)
最佳答案
以下应该有效:
def sampling(selection, offset=0, limit=None):
return selection[offset:(limit + offset if limit is not None else None)]
这出于三个原因:
无需检查偏移量是否为0(如果为0则从头开始)
selection[offset:None]
从offset
到列表末尾三元运算符
(limit + offset if limit else None)
允许您使用limit + offset
如果 limit 是整数,而None
如果不是。 (请注意,limit + offset
是否大于列表的长度并不重要。selection[10:100000000]
将默认上升到列表的末尾列表)。
关于python - 使用偏移量和限制对数组进行切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14698455/