s = ["1", "2", "3", "4", "5"]
t = ["a", "b", "c", "d", "e"]
#第一次打印
for x, y in zip(s, t):
print(x + "-" + y)
#第二次打印
for x in zip(s, t):
print(x)
print("######")
u = {"1", "2", "3", "4", "5"}
v = {"a", "b", "c", "d", "e"}
#第三次打印
for x in zip(u, v):
print(x)
1.第一次打印和第二次打印为什么不一样?
为什么第一次打印中for循环的x,y可以访问元组中的元组的元素?
而第二次打印中for循环的x直接访问的是元组中的元组?
2.为什么第三次打印利用zip()组成的元素不是按顺序将对应元素打包成元组,而是随机对应呢?
1、第一次打印和第二次打印不同的原因是,第一次打印中使用了解构(unpacking),将元组中的元素依次赋值给了变量x和y,而第二次打印中只使用了一个循环变量x,直接访问了整个元组。
第一次打印中的for循环变量x和y可以访问元组中的元组的元素是因为zip()函数返回的是一个元组列表,列表中每个元素都是一个包含了相应位置上可迭代对象的元组。因此,使用解构的方式,可以将这些元组的元素赋值给两个变量,以访问其中的元素。
2、第三次打印利用zip()组成的元素不是按顺序将对应元素打包成元组的原因是,集合(set)是无序的数据类型,无法保证其中元素的顺序,而zip()函数是将对应位置的元素打包成元组,如果可迭代对象的顺序不一致,那么组成的元组也是不一致的。因此,在第三次打印中,虽然u和v中的元素是一一对应的,但是由于它们是集合,所以它们在遍历时的顺序是随机的,所以打印结果中元组的顺序也是随机的。
第一个问题
第一次打印你把它变成了一个元组,然后这个元组被拆分成了两个变量x和y
第二次打印zip()函数返回的是一个由两个序列中对应位置上的元素组成的元组,这个元组没有被拆分成两个变量。
第二个问题
而集合本身是无序的,所以对不上
1.你先把zip(s, t)放进一个变量,然后强制转换成list类型,打印出来看看里面到底是什么,不要空想
2.a,b=(1,2),那么a=1,b=2,而c=(1,2),c就是一个元组
3.set是无序的