2024-04-17 21:39:41 发布
网友
我正试着列一张有数字的单子。很明显,这对写/读是很烦人的,所以我试图列出一个包含范围的列表。在Python 2中,似乎:
some_list = range(1,1000)
在Python 3中,这个范围与Python 2的xrange相似吗?
xrange
有谁能对此提供一些见解吗?
在Pythons<;=3.4中,您可以像其他人建议的那样,使用list(range(10))以使列表超出范围(通常,任何iterable)。
list(range(10))
Python中引入的另一种方法是在列表文本中使用*:
*
>>> r = range(10) >>> l = [*r] >>> print(l) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
虽然这相当于list(r),但它是文字语法,而且不涉及函数调用,这确实让它执行得更快。如果你需要编写高尔夫代码,它的字符数也会减少:-)
list(r)
您只需从range对象构造一个列表:
my_list = list(range(1, 1001))
这就是在python2.x中使用生成器的方法。一般来说,您可能不需要一个列表,因为您可以更有效地获得my_list[i]的值(i + 1),如果您只需要遍历它,就可以返回到range。
my_list[i]
i + 1
range
还要注意,在python2.x上,xrange仍然是可转位的。这意味着python3.x上的range也具有相同的属性2
1print xrange(30)[12]适用于python2.x
print xrange(30)[12]
2在python3.x中与1类似的语句是print(range(30)[12]),这也起作用。
print(range(30)[12])
在Python3.x中,range()函数有自己的类型。所以在这种情况下,必须使用迭代器
range()
list(range(1000))
在Pythons<;=3.4中,您可以像其他人建议的那样,使用
list(range(10))
以使列表超出范围(通常,任何iterable)。Python中引入的另一种方法是在列表文本中使用
*
:虽然这相当于
list(r)
,但它是文字语法,而且不涉及函数调用,这确实让它执行得更快。如果你需要编写高尔夫代码,它的字符数也会减少:-)您只需从range对象构造一个列表:
这就是在python2.x中使用生成器的方法。一般来说,您可能不需要一个列表,因为您可以更有效地获得
my_list[i]
的值(i + 1
),如果您只需要遍历它,就可以返回到range
。还要注意,在python2.x上,
xrange
仍然是可转位的。这意味着python3.x上的range
也具有相同的属性21
print xrange(30)[12]
适用于python2.x2在python3.x中与1类似的语句是
print(range(30)[12])
,这也起作用。在Python3.x中,
range()
函数有自己的类型。所以在这种情况下,必须使用迭代器list(range(1000))
相关问题 更多 >
编程相关推荐