使用for循环时往往要搭配range()
进行使用。
range( start, stop, step )
生成一个对象,其中包含[start , stop)范围内的数据元素。
且按照step设定的间隔取值,生成最终的数据对象。
今天碰到一个问题:使用for循环逆序打印列表中的数据。
一开始我是这样写的
for i in range(1,10,-1): print(i)
可是程序执行后并没有按照预期打印出来。
于是我就将这个range转为list进行打印:
print(list(range(1,10,-1)))
结果也挺出乎意料的:
没错,结果是一个空列表。
很明显,这根for循环本身没关系,这就是range的问题了。
百思不得其解后,去看了看官方文档,文档中有这么一段描述:
也就是说:
step为正,就会生成[ start , stop )
的列表;
step为负,就会生成[ stop , start )
的列表;
所以,如果要使用step为负的range,那么必须使stop<start