Return range() 函数的所有值并将它们添加到数组中

Return all values from range() function and add them into an array

我正在尝试制作一个从 PDF 文件中提取特定 PDF 页面的程序。为此,我有一个数组,其中放置了我要提取的所有页码。但是,为了节省一些时间,我希望能够添加两个页码之间的所有页面(例如 1 到 8 之间)。

目前我有以下代码:

def r(n1, n2):
    return range(n1, n2)

if __name__ == '__main__':
    pages_to_keep = [1, 2, 10, r(12,14)]
    print pages_to_keep

输出为:

[1, 2, 10, [12, 13]]

但我想要的是:

[1, 2, 10, 12, 13, 14]

这里的想法是可以在数组中调用r函数来轻松添加多个页面,但我想去掉函数返回的括号。有办法吗?

有两种方法:

  1. pages_to_keep = [1, 2, 10]+list(r(12,14))
pages_to_keep = [1, 2, 10]
pages_to_keep.extend(list(r(12,14)))

你应该使用解包运算符 (*)

pages_to_keep = [1,2,10, *list(r(12,14))]

绝对不建议在您的任何项目中这样做 r = range。更改 built-in 函数的名称会使代码对其他开发人员来说变得不那么易读,因为这在任何其他项目中都不是默认的。

In other words it is not pythonic and you should not do that, never!

要遵循您的代码并重命名 python 中的函数,只需存储指向您希望的函数的指针,无需为此重新定义函数:

r = range
r(1,2) # [1,2]

在这里你的答案是明码

pages = [1,2]
pages.extend(r(5,8))

print(pages)
# [1, 2, 5, 6, 7]