zhdwinter 发表于 2018-5-18 16:35:27

不是说tuple不能直接改元素吗

tuple1 = '小甲鱼',['黑夜','迷途,小布丁']
tuple1.insert(1,'怡景')
tuple1

通过上面的语句,我也没有将tuple1进行切片就直接修改了其中的元素了啊

BngThea 发表于 2018-5-18 16:39:43

tuple本身不能修改,但是如果它的元素是可变的,比如列表,那么这个元素本身可以被修改

thexiosi 发表于 2018-5-18 16:41:33

hi 原因如下:
tuple1 是列表,因此可以使用insert方法。示例:
>>> tuple1
['黑夜', '迷途,小布丁']
>>> type(tuple1)
<class 'list'>

zhdwinter 发表于 2018-5-18 17:11:41

BngThea 发表于 2018-5-18 16:39
tuple本身不能修改,但是如果它的元素是可变的,比如列表,那么这个元素本身可以被修改

但是这个列表也是tuple中的元素啊,和字符串一个等级啊

zhdwinter 发表于 2018-5-18 17:14:45

thexiosi 发表于 2018-5-18 16:41
hi 原因如下:
tuple1 是列表,因此可以使用insert方法。示例:
>>> tuple1


也就是说有个tuple1的标签一直在贴在list上,你不能直接修改tuple1只有读取作用,不具有写入作用,因此当我们原地改变list的时候,tuple1的值也就变了,对吧

BngThea 发表于 2018-5-18 17:19:57

zhdwinter 发表于 2018-5-18 17:11
但是这个列表也是tuple中的元素啊,和字符串一个等级啊

这个元素本身是可变的,所以可以修改,字符串等是不可变的

thexiosi 发表于 2018-5-18 17:25:41

zhdwinter 发表于 2018-5-18 17:14
也就是说有个tuple1的标签一直在贴在list上,你不能直接修改tuple1只有读取作用,不具有写入作用, ...

对,tuple1 指向了一个列表,当你通过insert()方法改变这个列表后,tuple1跟着改变。tuple1 是 元祖tuple1中的一个元素,它的类型是列表,因此可以使用insert()方法

zhdwinter 发表于 2018-5-18 17:31:37

thexiosi 发表于 2018-5-18 17:25
对,tuple1 指向了一个列表,当你通过insert()方法改变这个列表后,tuple1跟着改变。tuple1 是...

因为我调用的list的函数都是没有返回值的,也就是list是在原地变化的,所以我以为只要是原地变化的量都可以反馈会tuple1[]中,因此我在tuple后面新增了一个数字1,我使用原地加法对其进行赋值,tuple1 += 1,
结果报错了提示不能修改。看来list是个特例

thexiosi 发表于 2018-5-18 17:37:36

zhdwinter 发表于 2018-5-18 17:31
因为我调用的list的函数都是没有返回值的,也就是list是在原地变化的,所以我以为只要是原地变化的量都可 ...

嗯,主要是看元祖中的元素是否支持对应的方法

zhdwinter 发表于 2018-5-18 17:42:49

BngThea 发表于 2018-5-18 17:19
这个元素本身是可变的,所以可以修改,字符串等是不可变的

好的,可能list是个特例

ba21 发表于 2018-5-18 17:46:40

>>> type(tuple1)
<class 'list'>

tuple1元组的内部列表了。
元组从来就没有insert 方法好吧。

zhdwinter 发表于 2018-5-18 17:55:26

ba21 发表于 2018-5-18 17:46
>>> type(tuple1)




我知道元组没有insert啊,我用insert改变的是元组中的list啊

新手·ing 发表于 2018-5-18 18:05:05

zhdwinter 发表于 2018-5-18 17:55
我知道元组没有insert啊,我用insert改变的是元组中的list啊

所以没毛病啊,列表有insert方法,关外面的tuple干嘛。

秋木叶 发表于 2018-5-18 18:07:46

tuple1 = '小甲鱼',['黑夜','迷途,小布丁'] // 你这个定义就不是元组!是列表

zhdwinter 发表于 2018-5-18 18:19:42

秋木叶 发表于 2018-5-18 18:07
tuple1 = '小甲鱼',['黑夜','迷途,小布丁'] // 你这个定义就不是元组!是列表

这个你真的弄错了

zhdwinter 发表于 2018-5-18 18:20:57

新手·ing 发表于 2018-5-18 18:05
所以没毛病啊,列表有insert方法,关外面的tuple干嘛。

我的意思是我直接通过修改list实现了修改tuple的功能,并没有通过切片的方法

秋木叶 发表于 2018-5-18 18:35:36

zhdwinter 发表于 2018-5-18 18:19
这个你真的弄错了

学习了
页: [1]
查看完整版本: 不是说tuple不能直接改元素吗