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 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示