我正在将一些数据从 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)]
这有以下三个原因:
selection[offset:None]
从 offset
到列表末尾 (limit + offset if limit else None)
允许您在限制为整数时使用 limit + offset
,否则使用 None
。 (请注意,limit + offset
是否大于列表的长度并不重要。selection[10:100000000]
将默认上升到列表的末尾)。 关于python - 使用偏移量和限制对数组进行切片,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14698455/