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

标签 python

我正在将一些数据从 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] 将默认上升到列表的末尾列表)。

关于python - 使用偏移量和限制对数组进行切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14698455/

相关文章:

python - 模块未找到错误 : No module named 'models'

python - 是否可以通过事务方式改变 GAE 实体?

python - 如何正确使用Tensorflow MeanIOU指标?

python - 如何在添加另一个 y 轴的同时旋转 x 标签?

python - Linux 中的虚拟环境和 Python 客户端服务器

python-opencv 我如何将文件对象转换为 numpy.ndarray

Python win32com 不知道模块名称

Python:re.sub 条件不起作用

python - Pprint 模块在 32 位系统中与 Django 配合使用缓慢

python - 如何调整图像大小并保持纵横比