用Python制作列表

用Python制作列表,python,list,Python,List,我遇到了一些对我来说很奇怪的事情,看过这里的一些帖子后,我似乎找不到任何人试图做类似的事情。因此,我尝试创建一个列表,如下所示: group1 = range(1-10) group2 = range(10-20) group3 = range(20-30) group4 = range(30-40) group5 = range(40-49) groups = [group1, group2,group3,group4,group5] 这似乎导致了一个由5个空列表组成的列表。有什么好处?谢

我遇到了一些对我来说很奇怪的事情,看过这里的一些帖子后,我似乎找不到任何人试图做类似的事情。因此,我尝试创建一个列表,如下所示:

group1 = range(1-10)
group2 = range(10-20)
group3 = range(20-30)
group4 = range(30-40)
group5 = range(40-49)

groups = [group1, group2,group3,group4,group5]

这似乎导致了一个由5个空列表组成的列表。有什么好处?谢谢你的帮助

当您编写
范围(1-10)
时,实际上是从1中减去10,即
范围(1-10)
计算为
范围(-9)
。正确的语法是
range(1,10)

我猜您想要一个
1..10
然后
10..20
之间的范围列表,依此类推

因此,您可以使用
列表理解
执行类似操作,如以下示例:

a = ((1, 10), (10, 20), (20, 30), (30, 40), (40, 49))
final = [list(range(*val)) for val in a]

print(final)
输出:

>>> [[1, 2, 3, 4, 5, 6, 7, 8, 9], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [20, 21, 22, 23, 24, 25, 26, 27, 28, 29], [30, 31, 32, 33, 34, 35, 36, 37, 38, 39], [40, 41, 42, 43, 44, 45, 46, 47, 48]]

首先,您需要使用
范围(1,10)


第二,你不会得到一个列表,你会得到一个
range
对象,它是一个生成器。如果您想要一个实际的列表,那么您必须执行
列表(范围(1,10))

-
是减法<代码>范围(x-y)应该是
范围(x,y)
范围使用,而不是-所以它更像范围(1,10)
范围(1-10)=范围(-9)
范围(1-10)=范围(0,-9)
[范围(开始,结束)对于开始,结束于a]
足够了,甚至
[范围(*值)对于a]
谢谢您的评论。但是,您能否解释如何在不使用[range(1,10)、range(10,20),…]的情况下显式公开范围?对于Python 3,您需要使用
list
=
[list(range(*values))对a]
中的值进行包装。在Python2中,它按原样工作。这就是我在python3中使用列表理解的原因。我不用蟒蛇。谢谢你的评论,我会更新我的答案。谢谢大家,这是大脑抽筋的结果!我使用的是Python2,如果我正确指定了范围,它就会像预期的那样工作。这只适用于Python3。是的,3.x返回范围。2.x返回一个列表。但是,您仍然可以运行上面的代码。它不会抛出错误。虽然这是多余的。