python中list赋值的问题

python中list赋值的问题

叹沉浮 发布于 2021-11-26 字数 766 浏览 722 回复 7

    在看官网文档的时候,看到list的一节,发现一个问题:

In[68]: letters
Out[68]: ['a', 'b', 'C', 'D', 'E', 'f', 'g']
In[69]: letters[2:5] = ['c', 'd', 'e']
In[70]: letters
Out[70]: ['a', 'b', 'c', 'd', 'e', 'f', 'g']
In[71]: letters[2:5] = ('C', 'D', 'E')
In[72]: letters
Out[72]: ['a', 'b', 'C', 'D', 'E', 'f', 'g']

    我如果想让letters[2:5]被元祖('C', 'D', 'E')覆盖,那么如何实现?为什么:

In[71]: letters[2:5] = ('C', 'D', 'E')
In[72]: letters
Out[72]: ['a', 'b', 'C', 'D', 'E', 'f', 'g']

无法实现我的要求?

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

本宫微胖 2021-12-01 7 楼

引用来自“今日无云”的评论

     原谅我没有看懂楼主的问题

In[71]: letters[2:5]=('C','D','E')

路还长,别太狂 2021-12-01 6 楼

     原谅我没有看懂楼主的问题

In[71]: letters[2:5]=('C','D','E')

秉烛思 2021-12-01 5 楼

回复
@fzyz_sb : 其实源码我也没看,元组估计就是数组,里面保存PyObject对象,而list就相当于c中的列表,猜的。抱歉这么久回复,不是很频繁登陆。至于这种特性,我其实没那么深究。python中的dict,tuple这些数据类型都是PyObject。对这种语法没看Python的官方的语法文档部分,一直在看如何编写扩展。如有不足,相互学习吧

2021-12-01 4 楼

具体的编码实现没问题,但问题是:为什么python语言会把元祖的替换解释为数组.这个问题要从python源代码实现方向上回答,源代码我还没看,所以不太懂......

泪冰清 2021-12-01 3 楼

后来我理解了,实际上只要这样写:letters[2:5] = [('c', 'd', 'e')]即可.我只是刚开始想不通为什么一定要用[]来包含元素,但是看到letters[:] = []的操作时候我想明白这是语言的特性.

醉生梦死 2021-12-01 2 楼

这是我后面的思考总结: http://my.oschina.net/voler/blog/466282

柳若烟 2021-12-01 1 楼

类似于["a","b",("C","D","E"),"f","g"]形式,如果这样的话,先用pop方法弹出c,d,e中的任意两个,然后letters[index]=("C","D","E")