普通的 for/in 语句是否保证列表按顺序迭代?
my_list = [5,4,3,2]
for i in my_list
print(i)
也就是说,上面的循环是否保证每次都打印 5 4 3 2
?
原文由 Tony Ennis 发布,翻译遵循 CC BY-SA 4.0 许可协议
普通的 for/in 语句是否保证列表按顺序迭代?
my_list = [5,4,3,2]
for i in my_list
print(i)
也就是说,上面的循环是否保证每次都打印 5 4 3 2
?
原文由 Tony Ennis 发布,翻译遵循 CC BY-SA 4.0 许可协议
当你迭代一个序列(列表、元组等)时,顺序是有保证的。散列结构(dict、set 等)有自己的顺序——但对于给定的结构,顺序每次都是相同的。如果您添加或删除一个元素,顺序可能会有所不同。
考虑以下代码:我制作了一组五个元素,然后用四个相同 的 for 循环打印出来。顺序是一样的。然后我添加两个元素;这打乱了秩序。
my_set = set(["Apple", "Banana", "Casaba", "Dinner", "Eggplant"])
for food in my_set:
print food,
print "\n"
for food in my_set:
print food,
print "\n"
for food in my_set:
print food,
print "\n"
for food in my_set:
print food,
print "\n"
my_set.add("Fruitcacke")
my_set.add("Grape")
for food in my_set:
print food,
print "\n"
输出:
Casaba Dinner Apple Eggplant Banana
Casaba Dinner Apple Eggplant Banana
Casaba Dinner Apple Eggplant Banana
Casaba Dinner Apple Eggplant Banana
Casaba Fruitcacke Grape Apple Dinner Eggplant Banana
请注意原始元素的顺序不再相同:“Dinner”现在位于“Apple”之后。
原文由 Prune 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5k 阅读✓ 已解决
2 回答1k 阅读✓ 已解决
4 回答934 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
A
for
循环的迭代顺序由它迭代的任何对象控制。遍历有序集合,如list
保证遍历列表顺序中的元素,但遍历无序集合,如set
几乎没有顺序保证。