【Python自学】05. list和 tuple

来源:互联网 发布:12本程序员必读的书籍 编辑:程序博客网 时间:2024/06/05 19:07

使用 list 和 tuple

list

  • 列表,Python内置的一种数据类型,是一种有序的集合,可随时添加删除其中的元素。
  • 表示: classmates = [‘Michael’, ‘Bob’, ‘Tracy’]
  • 内部元素可以多种类型,例如:L=[‘Apple’,123,True,’[‘Michael’, ‘Bob’, ‘Tracy’]’]
                这里的 L 可以相当于:[‘Apple’,123,True,classmates]
                要拿到 L 中的 ‘Bob’ ,可以 L[3] [1],如同二维数组
  • 空列表,N=[]

相关操作:

  •  len() 函数 获取元素个数:
         len(classmates),结果为 3;
         len(L),注意结果是4
         len(N),结果为0            
       
  •  使用 索引 访问每一个位置的元素:
         classmates[0],得到 Michael;
         classmates[1],得到 Bob;
         classmates[2],得到 Tracy;
         最后元素的索引值是: len(classmates)-1
     
  •  负数索引
         classmates[-1],可以得到最后的元素,Tracy,依次类推-2,-3,但别越界,否则报错。

  •  修改列表元素
         1. append( ) 追加到列表末尾:
            classmates.append(‘Adam’) ==> [‘Michael’, ‘Bob’, ‘Tracy’,’Adam’]
         2. insert( ) 插入到指定位置:
            索引1处, classmates.insert(1, ‘Jack’) ==>[‘Michael’, 'Jack',’Bob’, ‘Tracy’,’Adam’]
         3. pop( ) 删除列表末尾的元素:
             classmates.pop() ==> [‘Michael’, 'Jack',’Bob’, ‘Tracy’]
         4. pop(i) 删除指定 i 索引位置上的元素:
             classmates.pop(1) ==> [‘Michael’,’Bob’, ‘Tracy’]
         5. 索引替换 赋值替换对应索引值上的元素:
             classmates.[1] = ‘Sarah’ ==> [‘Michael’,’Sarah’, ‘Tracy’]

tuple

  • 元组,一种有序列表,与 list 相似,但是一旦初始化就无法修改,但正因为这样,所以更安全
  • 表示: classmates = (‘Michael’, ‘Bob’, ‘Tracy’)
  • 没有上述修改元素的方法,可以使用索引,但同样不能赋值代替元素
  • 注意定义时候,tuple 的元素就必须被确定下来:
        t=(1,2)
  • 空元组: t=()

陷阱:
  定义一个只有一个元素的元组,如果这么定义: t=(1)
  那么,恭喜,定义的不是 tuple,而是 1 这个数。因为 () 既可以表示元组,也可以表示数学公式中的小括号。这就是产生歧义,Python 在这种情况会按照小括号进行计算,计算的结果自然是 1。
  正确做法:加个小逗号以消除歧义
  t=(1,)

可变的tuple?
  >>> t = (‘a’, ‘b’, [‘A’, ‘B’])
  >>> t[2][0] = ‘X’
  >>> t[2][1] = ‘Y’
  >>> t
  (‘a’, ‘b’, [‘X’, ‘Y’])
  其实,tuple所说的不可变指的是“指向性不可变”,如下图所示:
  
  而将(‘a’, ‘b’, [‘A’, ‘B’])改为(‘a’, ‘b’, [‘X’, ‘Y’])后:
  
  很显然,如果要做个真正不可变的元组,很简单,保证其元素也不可变即可。


        周二更

原创粉丝点击