【发布时间】:2015-12-26 22:59:01
【问题描述】:
我喜欢学习在 Python 中创建列表的有效方法。我发现自己需要一个看起来像这样的整数列表:
[[5904],
[5904, 5905],
[5904, 5905, 5906],
[5904, 5905, 5906, 5907],
[5904, 5905, 5906, 5907, 5908],
[5904, 5905, 5906, 5907, 5908, 5909]]
我既不是专家程序员也不是理论数学家,所以我在 Python 中将以下函数混合在一起以生成列表列表:
def running_list_of_incremented_integer_lists(start, end):
single_integer_list = new_list = [start]
integer_lists = [single_integer_list]
for integer in range(start, end + 1):
new_list = copy(new_list)
for _integer in range(integer, integer + 1):
new_list.append(_integer + 1)
integer_lists.append(new_list)
return integer_lists
所以我的问题是:
- 是否有更高效和/或 Python 风格的方式来编写这段代码?
- Python 中是否有任何模块可以帮助编写此代码?
- 这种类型的列表有技术名称吗?
我仔细阅读了itertools documentation,希望我可以把东西放在那里使用。
感谢您帮助我学习。
【问题讨论】:
-
[range(5094, 5095+n) for n in range(6)]? -
把它变成答案。
-
是的。这就是我一直在寻找的。谢谢!
-
min, max = 5904, 5909; intLists = [ range(min, x) for x in range(min + 1, max + 2) ] -
+ 1 用于将最小值和最大值放入变量中。我会使用这个版本。谢谢你帮助我学习。 (我将最小值、最大值更改为最小值和最大值,因为
min和max已经在 Python 中定义了函数。)