KimYDae 2023-04-24 14:58 采纳率: 83.5%
浏览 26
已结题

python:元组的打印和zip函数


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()组成的元素不是按顺序将对应元素打包成元组,而是随机对应呢?

  • 写回答

4条回答 默认 最新

  • 丘比特惩罚陆 2023-04-24 15:05
    关注

    1、第一次打印和第二次打印不同的原因是,第一次打印中使用了解构(unpacking),将元组中的元素依次赋值给了变量x和y,而第二次打印中只使用了一个循环变量x,直接访问了整个元组。
    第一次打印中的for循环变量x和y可以访问元组中的元组的元素是因为zip()函数返回的是一个元组列表,列表中每个元素都是一个包含了相应位置上可迭代对象的元组。因此,使用解构的方式,可以将这些元组的元素赋值给两个变量,以访问其中的元素。

    2、第三次打印利用zip()组成的元素不是按顺序将对应元素打包成元组的原因是,集合(set)是无序的数据类型,无法保证其中元素的顺序,而zip()函数是将对应位置的元素打包成元组,如果可迭代对象的顺序不一致,那么组成的元组也是不一致的。因此,在第三次打印中,虽然u和v中的元素是一一对应的,但是由于它们是集合,所以它们在遍历时的顺序是随机的,所以打印结果中元组的顺序也是随机的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月2日
  • 已采纳回答 4月24日
  • 创建了问题 4月24日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?