whycxsa 2023-04-24 14:58 采纳率: 82.8%
浏览 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条回答 默认 最新

  • 丘比特惩罚陆 Java领域新星创作者 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 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥15 vba使用jmail发送邮件正文里面怎么加图片
  • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。