此问题在此处已有答案:
Is it possible to make a for
loop without an iterator variable? (How can I make make code loop a set number of times?)(14个答案)
7个月前关闭。
在Python中,有两种很好的方法可以多次重复某个动作,一种是while
循环,另一种是-for
循环,下面我们来看两段简单的代码:
for i in range(n):
do_sth()
另一个是:
i = 0
while i < n:
do_sth()
i += 1
我的问题是哪一个更好。当然,第一个,在文档示例和各种代码中很常见,你可以在互联网上找到,要优雅得多,也更短,但另一方面,它创建了一个完全无用的整数列表,只是为了循环它们。这不是浪费内存吗,特别是考虑到大量的迭代?
你觉得怎么样,哪条路更好?
4条答案
按热度按时间jei2mxaa1#
但另一方面,它创建了一个完全无用的整数列表,只是为了循环它们,这不是浪费内存吗,尤其是考虑到大量的迭代?
这就是
xrange(n)
的用途,它避免了创建一个数字列表,而只是提供了一个迭代器对象。在Python 3中,
xrange()
被重命名为range()
--如果你想要一个列表,你必须通过list(range(n))
明确地请求它。flmtquvp2#
这比
xrange
(和while循环)更轻,因为它甚至不需要创建int
对象,而且在Python2和Python3中同样有效iezvtpos3#
Python3号和Python2号
只需使用
range()
:6qqygrtg4#
大多数编程语言的根本区别在于,* 除非 * 意外发生,
for
循环总是重复n
次 * 或直到break语句,(其可以是有条件的)被满足 * 则以X1 M2 N1 X循环结束它可以重复X1 M3 N1 X,根据在每个循环开始时必须为真以使其执行并且在退出循环时总是为假的给定条件,(为了完整性,X1 M4 N1 X循环(或X1 M5 N1 X)对于具有它的语言总是至少执行一次并且不保证第一次执行的条件)。值得注意的是,在Python中,
for
或while
语句可以包含break
、continue
和else
语句,其中:break
-终止循环continue
-移动到循环的下一次,而这次不执行以下代码else
-如果循环完成但未执行任何break
语句,则执行。**N.B.**在 * 现在不支持的 * Python 2
range
中产生了一个整数列表,但是你可以使用xrange
来使用迭代器。在Python 3中,range
返回一个迭代器。所以你问题的答案是“* 这完全取决于你想做什么 *”!