2017-05-02 34 views

回答

2

是的。 for循環是順序的。

1

是的,循環將始終從第一個字符開始逐個打印每個字母,並以最後一個字符結束。

5

是的。這是因爲str類型是不可變的序列。序列表示有限的訂購的元素集(請參閱參考指南的the Data model chapter中的序列)。

通過給定字符串(任何序列)的迭代可以保證總是以相同的順序爲CPython解釋器,CPython版本和Python實現的不同運行產生相同的結果。

3

是的。在內部,你在那裏的字符串存儲在一個c樣式數組中(取決於解釋器的實現),作爲一個連續的數據數組,可以創建一個iterator。爲了使用for ... in ...語法,您需要能夠迭代覆蓋in之後的對象。字符串提供自己的迭代器,從而允許通過for語法按照順序排列,如do all python sequences

對於列表甚至您創建的自定義對象也是如此。然而,並非所有可迭代的python對象都必須按順序或代表它們存儲的值,這是一個明確的例子,它是dictionary。字典迭代產生的鍵可能會或可能不是你添加它們的順序(取決於你使用的Python的版本等等,所以不要假定它的順序除非你使用OrderedDict)而不是像列表元組這樣的順序值和串。

3

是的。在字符串上,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) 

將一些任意的順序,你不能提前預測容易重複。

請參閱此堆棧溢出answer瞭解有關字典和集合的訂單保證的一些附加信息。