zip 操作是否能保留顺序?

Lea*_*ers 0 python

我正在阅读 geeksforgeeks 的以下示例:

# Python code to demonstrate the working of  
# zip() 
  
# initializing lists 
name = [ "Manjeet", "Nikhil", "Shambhavi", "Astha" ] 
roll_no = [ 4, 1, 3, 2 ] 
marks = [ 40, 50, 60, 70 ] 
  
# using zip() to map values 
mapped = zip(name, roll_no, marks) 
  
# converting values to print as set 
mapped = set(mapped) 
  
# printing resultant values  
print ("The zipped result is : ",end="") 
print (mapped) 
Run Code Online (Sandbox Code Playgroud)

但如果你看到结果:

压缩结果为:{('Shambhavi', 3, 60), ('Astha', 2, 70), ('Manjeet', 4, 40), ('Nikhil', 1, 50)}

我本来希望看到 {('Manjeet', 4, 40), ('Nikhil', 1, 50), ('Shambhavi', 3, 60), ('Astha', 2, 70)}。所以这让我想到如果我想使用 zip 在两个列表之间进行数学运算,zip 本身会改变顺序吗?我尝试了这个小代码,但似乎没有,但我仍然有疑问。这次我是运气好还是需要担心?我真的需要(A,B)中情侣的位置不要改变。

A = range(1,14)
B = range(2,15)

data = [x + y for x, y in zip(A, B)]
print(data)
Run Code Online (Sandbox Code Playgroud)

Bal*_*esh 5

zip利用底层迭代器。它不会改变顺序。

这是文档

保证可迭代对象从左到右的求值顺序。这使得使用 zip(*[iter(s)]*n) 将数据系列聚类为 n 长度组的习惯用法成为可能