Python学习笔记(3):第四章list和tuple类型

1196 查看

4-1创建list

  • 由于Python是动态语言,所以list中包含的元素并不要求都必须是同一种数据类型,我们完全可以在list中包含各种数据
  • 一个元素也没有的list,就是空list
  • list可以同时包含字符串和数字

    eg:

假设班里有3名同学:Adam,Lisa和Bart,他们的成绩分别是 95.5,85 和 59,请按照 名字, 分数, 名字, 分数... 的顺序按照分数从高到低用一个list表示,然后打印出来。

L = [ 'Adam', 95.5, 'Lisa', 85, 'Bart', 59]
print L

4-2按照索引访问list

  • 索引从 0 开始,也就是说,第一个元素的索引是0,第二个元素的索引是1,以此类推。不要越界。

eg:

三名同学的成绩可以用一个list表示:L = [95.5, 85, 59] 请按照索引分别打印出第一名、第二名、第三名、第四名的分数。

L = [95.5,85,59]
print L[0]
print L[1]
print L[2]
print L[3] #越界

4-3倒序访问list

  • 可以用-n来表示倒数第n+1个元素。不可越界。

    eg:

    L = [95.5,85,59]
    print L[-1]
    print L[-2]
    print L[-3]
    print L[-4] #越界

    4-4添加新元素

  • 方法一 :append()总是把新的元素添加到 list 的尾部
  • 方法二:用list的 insert()方法,它接受两个参数,第一个参数是索引号,第二个参数是待添加的新元素。

    eg:

假设新来一名学生Paul,Paul 同学的成绩比Bart好,但是比Lisa差,他应该排到第三名的位置,请用代码实现排名。

L = [ 'Adam',  'Lisa',  'Bart']
L.insert(2, 'Paul') #或者L.insert(-1, 'Paul') 
print L

4-5 从list删除元素

L = ['Adam', 'Lisa', 'Bart', 'Paul']
  • pop()方法总是删掉list的最后一个元素,并且它还返回这个元素,所以我们执行 L.pop() 后,会打印出 'Paul'。
  • 如果想删除’Lisa‘呢?由于Lisa的索引是1,用pop(1)即可。

    eg:

    如果想同时删除'Bart', 'Paul'呢?
    L = ['Adam', 'Lisa', 'Bart', 'Paul']
    L.pop(2)
    L.pop(1)
    print L

    4-6 替换元素

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

    eg:

班里的同学按照分数排名是这样的:L = ['Adam', 'Lisa', 'Bart'] 。但是,在一次考试后,Bart同学意外取得第一,而Adam同学考了倒数第一。请通过对list的索引赋值,生成新的排名。

L = ['Adam', 'Lisa', 'Bart' ]
L[2] = 'Adam'
L[0] = 'Bart'

4-7创建tuple

  • 创建tuple和创建list唯一不同之处是用()替代了[]
  • tuple一旦创建完毕,不能修改。tuple没有 append()方法,也没有insert()pop()方法。
  • 获取 tuple 元素的方式和 list 是一模一样的,我们可以正常使用 t[0]t[-1]等索引方式访问元素,但是不能赋值成别的元素。

4-8创建单元素tuple

  • 因为()既可以表示tuple,又可以作为括号表示运算时的优先级。因此用()定义单元素的tuple有歧义,所以 Python 规定,单元素 tuple 要多加一个逗号“,”,这样就避免了歧义。

4-9“可变”的tuple

  • tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的。

    eg:

t = ('a', 'b', ['A', 'B'])由于 t 包含一个list元素,导致tuple的内容是可变的。能否修改上述代码,让tuple内容不可变?
['A', 'B']是list,因此内容可变。修改:t = ('a', 'b', ('A', 'B'))