以下是一个循环的形式
for x in range(3):
print x
保证输出结果
0
1
2
按照顺序吗?换句话说,如果您使用for item in mylist
语句循环遍历列表,循环是否保证从mylist[0]
开始,并顺序进行(mylist[1]
,mylist[2]
,...)?
以下是一个循环的形式
for x in range(3):
print x
保证输出结果
0
1
2
按照顺序吗?换句话说,如果您使用for item in mylist
语句循环遍历列表,循环是否保证从mylist[0]
开始,并顺序进行(mylist[1]
,mylist[2]
,...)?
list
和range
总是按您预期的顺序进行迭代。类定义其自己的迭代顺序,因此迭代顺序将在不同的类之间变化。由于它们的本质,set
和dict
(以及其他一些)不会按可预测的顺序进行迭代。list
。class reversedlist(list):
def __iter__(self):
self.current = len(self)
return self
def next(self):
if self.current <= 0:
raise StopIteration
self.current -= 1
return self[self.current]
x = reversedlist([0, 1, 2, 3, 4, 5])
for i in x:
print i,
# Outputs 5 4 3 2 1 0
range
函数返回一个列表。 - Steve Jessopfor
循环按顺序遍历list
或iter
。在Python 2.x中,range
返回列表,在Python 3.x中返回迭代器,因此您的for x in range(3)
循环确实总是有序的。dict
或set
不能这样说。它们不会按顺序遍历 - 这是因为它们的键的顺序是未定义的。是的,它从列表的第一个元素开始并遍历到最后一个元素。
并非Python中的所有数据类型都是如此,例如字典,但列表确实是这样的。range(x)
也是如此。
是的。
但是使用字典就无法保证顺序。
是的。Python关于For Loop的文档说:
基本上,任何具有可迭代方法的对象都可以在Python中的for循环中使用... 具有可迭代方法基本上意味着数据可以以列表形式呈现,其中有多个值按顺序排列
range
和内置的list
来说,它将是有序的。 - Tim