Skip to main content
 首页 » 编程设计

python之使用偏移量和限制对数组进行切片

2025年05月04日9cyq1162

我正在将一些数据从 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)] 

这出于三个原因:

  1. 无需检查偏移量是否为0(如果为0则从头开始)

  2. selection[offset:None] 从 offset 到列表末尾

  3. 三元运算符 (limit + offset if limit else None) 允许您使用 limit + offset 如果 limit 是整数,而 None 如果不是。 (请注意,limit + offset 是否大于列表的长度并不重要。selection[10:100000000] 将默认上升到列表的末尾列表)。