list:
简介:
py内置的一种数据类型是列表。list是一种有序的集合,可以随时添加或者删除其中的元素。
格式:
classmates=['str',num] #里面可以放数字或者字母
索引
采用索引的方式来访问list,索引是从0开始的
classmates = ['Michael', 'Bob', 'Tracy']
>>>classmates[0] 'Michael'
>>> classmates[1] 'Bob'
>>> classmates[2] 'Tracy'
>>> classmates[3] # 不可以越界访问
Traceback (most recent call last): File "", line 1, in IndexError: list index out of range
负索引: 当使用负索引的时候,是从后往前取list的值 索引 -1对应最后一个,-n对应第一个
当然了 不可以超过 索引的长度
>>> classmates[-1] 'Tracy'
list相关函数:
len():输出值是list的长度
len(classmates) #不可以使用 classmates.len()
Out[11]:3
append():可以往list中追加元素到list的末尾
classmates.append('Adam')
>>> classmates
['Michael', 'Bob', 'Tracy', 'Adam']
insert():将元素插入到指定的索引号,即把某个索引之后的元素都往后移,再把元素插入到这个索引上
>>> classmates.insert(1, 'Jack')
>>> classmates
['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']
pop():删除list末尾的元素,pop(i)是删除指定索引的元素
classmates.pop()
'Adam'
>>> classmates
['Michael', 'Jack', 'Bob', 'Tracy']
list 元素也可以是另一个 list,比如:
>>> s = ['python', 'java', ['asp', 'php'], 'scheme']
注:
1.list是可以混用的,里面既可以有 数字 又可以有字母或者其他类型
L = ['Apple', 123, True]
2.list可以嵌套
s = ['python', 'java', ['asp', 'php'], 'scheme']
len(s)
4
要注意 s 只有 4 个元素,其中 s[2]又是一个 list
p = ['asp', 'php']
>>> s = ['python', 'java', p, 'scheme'] 要拿到'php'可以写 p[1]或者 s[2][1],因此 s 可以看成是一个二维数组,
tuple
另一种有序列表叫元组:tuple.tuple和list非常类似,但是与list不同的是tuple一经初始化就无法再改变
命名格式:
tuple=('字母',数字)
获取方法:
和list相同,使用正索引 或者负索引来使用
tuple的陷阱:
当定义一个空的tuple,可以写成():
>>> t = ()
>>> t
()
但是当定义一个只有一个元素的tuple的时候,如何定义为
>>> t = (1)
>>> t
1
定义的不是tuple,是1这个数!这是因为()即可以表示tuple又可以表示数学公式中的小括号,这种情况py把()看成算符运算的()
正确的定义,必须在tuple之后加个逗号, 来消除歧义
>>> t = (1,)
>>> t
(1,)
最后来看一下可变的tuple
>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])
表面上看,tuple 的元素确实变了,但其实变的不是 tuple 的元素,而是 list 的元素。tuple 一开始指向的 list 并没有改成别的 list,所以,tuple 所谓的“不变”是说,tuple 的每个元素,指向永远不变。即指向'a',就 不能改成指向'b',指向一个 list,就不能改成指向其他对象,但指向的 这个 list 本身是可变的!