1、list
列表是Python内置的一种数据,list是一种有序的集合,可随时添加或者删除其中的元素。
举例:
列出一个班级所有同学的姓名,便可以使用一个列表表示:
>>> classmates = ['zhangsan','lisi','wanger']
>>> classmates
['zhangsan','lisi','wanger']
此时的变量classmates便是一个list,用len()函数可以获取list元素的个数
>>>len(classmates)
3
通过索引来访问list中每一个位置的元素,索引是从0开始的
>>> classmates[0]
'zhangsan'
>>> classmates[1]
'lisi'
>>> classmates[2]
'wanger'
>>>
当索引超出范围时,python报出IndexError的错误,因此要确保索引不要越界,记住最后一个元素的索引是len(classmates) -1.
如果要取得最后一个元素,除了计算索引位置外,还可以用-1直接取得最后一个元素
>>> classmates[-1]
'wanger'
以此类推:
>>> classmates[-1]
'wanger'
>>> classmates[-2]
'lisi'
>>> classmates[-3]
'zhangsan'
>>> classmates[-4]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> #第四个越界咯,此乃报错信息。
追加元素的末尾:
list是一个可变的有序表,因此可以往list中追加元素的末尾
>>> classmates.append('mazi')
>>> classmates
['zhangsan', 'lisi', 'wanger', 'mazi']
>>>
也可以把元素插入到指定的位置,比如索引号为1的位置:
>>> classmates.insert(1,'ergouzi')
>>> classmates
['zhangsan', 'ergouzi', 'lisi', 'wanger', 'mazi']
>>>
要删除列表末尾的元素,用pop()方法:
>>> classmates
['zhangsan', 'ergouzi', 'lisi', 'wanger', 'mazi']
>>> classmates.pop()
'mazi'
>>> classmates
['zhangsan', 'ergouzi', 'lisi', 'wanger']
>>> #列表中最后一个的麻子被删除了。
删除指定位置的元素,用pop(i)方法,i是指索引位置:
>>> classmates
['zhangsan', 'ergouzi', 'lisi', 'wanger']
>>> classmates.pop(2)
'lisi'
>>> classmates
['zhangsan', 'ergouzi', 'wanger']
>>> #指定位置的lisi被删除。
若要替换元素,直接给对应的索引位置赋值即可:
>>> classmates
['zhangsan', 'ergouzi', 'wanger']
>>> classmates[2] = "goudan"
>>> classmates
['zhangsan', 'ergouzi', 'goudan']
>>>
list内的元素的数据类型可以是不同的,例如:
>>> B = ['book',234,True]
>>> B
['book', 234, True]
>>>
list中的元素可以是另一个list,例如:
>>> C = ['java','perl',['php','C'],'python']
>>> len(C)
4
>>>
C中只有4个元素,其中C(2)还是一个list,分解开更容易理解:
>>> d = ['php','C']
>>> C = ['java','perl',d,'python']
>>>
要拿到php可以写d[1]或者C[2][1],可以看成一个二维数组,类似还有三维和四维数组
如果list中一个元素也没有,则是一个空list,它的长度为0
元组(tuple)
另一种有序列表就是元组了。元组和列表类似,但是元组一旦初始化便不可再次修改,例如同样列出一个班级同学们的名字:
>>> classmates = ('zhangsan','lisi','wanger')
>>>
现在classmates这个元组是不能变了,它没有append(),insert()这样的方法,但获取元素的方法和列表是一样的,可以正常的使用classmates[0],classmates[-1],但不能赋值成另外的元素。
因元组不可变,因此代码更安全,如果可能,尽量使用tuple代替list。
注意:当定义一个tuple时,tuple元素必须被确定下来:
>>> n = (1,2)
>>> n
(1, 2)
>>>
定义一个空tuple,可以写成():
>>>n = ()
只定义一个元素的tuple,要写成:
>>>n = (1,)
>>>n
1,
>>> #为什么要加一个逗号呢?因为定义的不是元组,二十1这个数!括号()这个东西,既可以表示元组,又可以表示数学公式的小括号,这便产生了歧义,因此在python中规定,这样的情况按小括号进行计算,结果自然为1,所以,只有一个元素的元组定义时必须加上逗号,来消除歧义。python在显示一个元素的时候,也会自动加上一个逗号,避免你误会成数学计算意义上的括号。
“可变的”元组:
>>> p = ('a','b',['A','B'])
>>> p[2][0] = 'x'
>>> p[2][1] = 'y'
>>> p
('a', 'b', ['x', 'y'])
>>>
以上元组定义了三个元素,有‘a’,'b'和一个列表。那它是怎么变的呢?下面上图:
当修改列表中的元素后,元组变成了:
表面上元组的元素是变了,其实变的是列表的元素。