为了账号安全,请及时绑定邮箱和手机立即绑定

python 元祖无法嵌套问题

python 元祖无法嵌套问题

森林海 2019-02-17 21:50:36
本人最近学习Python, 遇到了一些关于元祖和列表的问题, 如下: Python版本为3.6 代码如下: [1, 2] + [[3]] # -> [1, 2, [3]] (1, 2) + ((3),) # (1, 2, 3), 为什么不是 (1, 2, (3))? # 同理自己尝试了一下, 貌似会自动转换为一维元组 (1, 2, (((3)))) # -> (1, 2, 3) (1, 2) + (3, ) # -> (1, 2, 3) 有两个问题 为什么元组还可以进行加法. 本人了解到元祖为不可变对象, 那为什么还可以进行加法? 为什么无法嵌套元祖. 如上面例子展示, 所有的结果都被转换为了"一维"元组, 不是很明白其中的原理? 望能有前辈解答, 不胜感激!
查看完整描述

1 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

先给你的问题描述赞一个


  1. 先举个例子:整数、字符串也是不可变,为什么可以进行加法呢?实际上在 python 中 2 个对象能不能相加只取决于对象的 __add__ 方法,只要实现了该方法,就能相加
  2. 并不是不能,而是因为你在加号后面的元组是错的。因为元组字面量比较特殊,要使用 () 来声明,而在元组只有一个元素的时候,就和 python 语法中括号的用法产生了语义歧义,所以 python 规定,元组只有一个元素的时候,必须在元素后加一个逗号来表明这是一个元组,而不是用括号包裹的表达式。你的第二个表达式 (1, 2) + ((3),) 应该写成 (1, 2) + ((3,),)
查看完整回答
反对 回复 2019-03-01
  • 1 回答
  • 0 关注
  • 672 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信