Python入门 List和Tuple类型

系统 1554 0

List

Python内置的一种数据类型是列表: list 。list是一种有序的集合 ,可以随时添加和删除其中的元素。 

append() 总是把新的元素添加到 list 的尾部。

L.insert(0, 'Paul')   的意思是,'Paul'将被添加到索引为 0 的位置上(也就是第一个),而原来索引为 0 的Adam同学,以及后面的所有同学,都自动向后移动一位。

pop() 方法总是删掉list的最后一个元素,并且它还返回这个元素. 如果要删除指定位置的元素。则用:pop(index)

对list中的某一个索引赋值,就可以直接用新的元素替换掉原来的元素,list包含的元素个数保持不变。

List 的最后一个元素可用list[-1]获取或赋值。同样的,倒数第二个,倒数第三个可分别用下标-2,-3.

 

Tuple

tuple是另一种有序的列表,中文翻译为“ 元组 ”。tuple 和 list 非常类似,但是,tuple一旦创建完毕, 就不能修改了

创建tuple和创建list唯一不同之处是用 ( ) 替代了 [ ]

      >>> t = ('Adam', 'Lisa', 'Bart')
    

创建包含1个元素的 tuple 呢?来试试:

      >>> t = (1)
>>> print t
1
    

好像哪里不对!t 不是 tuple ,而是整数1。 为什么 呢?

因为 () 既可以表示tuple,又可以作为括号表示运算时的优先级,结果 (1) 被Python解释器计算出结果 1,导致我们得到的不是tuple,而是整数 1。

正是因为用()定义单元素的tuple有歧义,所以 Python 规定,单元素 tuple 要多加一个逗号 “,” ,这样就避免了歧义:

      >>> t = (1,)
>>> print t
(1,)
    

Python在打印单元素tuple时,也自动添加了一个 “,” ,为了更明确地告诉你这是一个tuple。

 

“可变”的tuple

前面我们看到了tuple一旦创建就不能修改。现在,我们来看一个“可变”的tuple:

          >>> t = ('a', 'b', ['A', 'B'])
        

注意 到 t 有 3 个元素: 'a','b' 和一个list: ['A', 'B'] 。list作为一个整体是tuple的第3个元素。list对象可以通过 t[2] 拿到:

          >>> L = t[2]
        

然后,我们把list的两个元素改一改:

          >>> L[0] = 'X'
>>> L[1] = 'Y'
        

再看看tuple的内容:

          >>> print t
('a', 'b', ['X', 'Y'])
        

不是说tuple一旦定义后就不可变了吗?怎么现在又变了?

别急,我们先看看定义的时候tuple包含的3个元素:

Python入门 List和Tuple类型

当我们把list的元素 'A'和'B' 修改为 'X'和'Y' 后,tuple变为:

Python入门 List和Tuple类型

表面上看,tuple的元素确实变了,但其实变的不是 tuple 的元素,而是list的元素。

tuple一开始指向的list并没有改成别的list,所以,tuple所谓的 “不变” 是说,tuple的每个元素,指向永远不变。即 指向'a',就不能改成指向'b' ,指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!

  如果要想使 t = ('a', 'b', ['A', 'B']),变成不可变的,可以改成:t=('a','b',('A','B'))

 

 

 

 

 

 

 

 

 

 

 

Python入门 List和Tuple类型


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论