Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在字符串上循环时,是否保证执行顺序?_Python_Python 3.x_For Loop_Order Of Execution - Fatal编程技术网

Python 在字符串上循环时,是否保证执行顺序?

Python 在字符串上循环时,是否保证执行顺序?,python,python-3.x,for-loop,order-of-execution,Python,Python 3.x,For Loop,Order Of Execution,下面的程序是否保证始终产生相同的输出 s = 'fgvhlsdagfcisdghfjkfdshfsal' for c in s: print(c) 对。for循环是连续的。是的,循环将始终逐个打印每个字母,从第一个字符开始,到最后一个字符结束。是的。这是因为str类型是一个不可变的序列。序列表示一组有限有序的元素(请参见参考指南中的序列) 对于CPython解释器的不同运行、CPython的版本和Python的实现,通过给定字符串(任意序列)的迭代保证始终以相同的顺序生成相同的结果 是

下面的程序是否保证始终产生相同的输出

s = 'fgvhlsdagfcisdghfjkfdshfsal'
for c in s:
    print(c)

对。for循环是连续的。

是的,循环将始终逐个打印每个字母,从第一个字符开始,到最后一个字符结束。

是的。这是因为
str
类型是一个不可变的序列。序列表示一组有限有序的元素(请参见参考指南中的序列)


对于CPython解释器的不同运行、CPython的版本和Python的实现,通过给定字符串(任意序列)的迭代保证始终以相同的顺序生成相同的结果

是的。在内部,您拥有的字符串存储在一个c风格的数组中(取决于解释器实现),作为一个数据序列数组,您可以创建一个。为了将
用于。。。在…
语法中,您需要能够在输入后迭代对象。字符串提供了自己的迭代器,允许通过for in语法按顺序对其进行分析


对于列表,甚至您创建的自定义对象也是如此。然而,并非所有iterable python对象都必须按顺序排列或表示它们存储的值,一个明显的例子是。字典迭代生成的键可能与您添加键的顺序相同,也可能与添加键的顺序不同(这取决于您使用的python版本,因此,除非您使用OrderedDict,否则不要假定键是有序的),而不是顺序值,如列表元组和字符串

是的。在字符串上,for循环按顺序在字符上迭代。列表和元组也是如此——for循环将按顺序迭代元素

你可能会想到集合和字典。它们没有指定特定的顺序,因此:

for x in {"a","b","c"}:  # over a set
    print(x)

for key in {"x":1, "y":2, "z":3}:  # over a dict
    print(key)
将以您无法提前轻松预测的任意顺序进行迭代

有关如何保证字典和集合的顺序的更多信息,请参阅此堆栈溢出