python学习[第八篇] 数据类型之 列表
python学习[第八篇] 数据类型之 列表
列表的增删改查
1列表的创建和赋值
创建列表就像给变量赋值一样。列表由方括号定义。列表可以包含任意类型的值
alist=[123,'abc',4.56,True,['inner','list']
2 查看列表
通过索引或切片来查看列表的值
alist[0]
alist[0:2]
3 更新列表
通过指定索引或者索引范围来更新一个或几个值
alist[2]='abcde'
alist[2:3]=['abcde',4.567]
4 删除列表
删除列表的元素
del alist[1]
alist.remove(123)
删除整个列表
del alist
操作符
1 标准类型操作符
对象值操作符: = > >= < <= != <>
对象身份操作符: is is not
布尔操作符: and or not
2 序列操作符
切片操作符
列表的切片使用方法和字符串一样,不同的是列表操作符可以多层叠加
alist=[123,'abc',4.56,True,['inner','list'] alist[4][1]
成员操作符 in not in
alist=[123,'abc',4.56,True,['inner','list']] 123 in alist ['inner','list'] in alist
连接操作符 + 只能是列表+列表
alist=[123,'aaa','bbbb'] blist=['ccc'123] alist+ blist
重复操作符 * list*num
alist=[12,34]
alist*2
列表解析 返回列表
[ i for i in [12,34,56]] [ i ** 2 for i in range(0,10) if i %2==0 ]
内建函数
标准类型内建函数
cmp()
列表元素cmp函数规则
1 对比两个列表的元素进行比较
2 如果比较的元素是同类型的,则比较其值,返回结果
3 如果两个元素不是同类型的,则检查他们是否是数字
a 如果是数字,执行必要的数字强制类型转换,然后比较
b 如果有一方元素是数字,则另一方元素大,(数字是最小的)
c 否则通过类型的名字的字母顺序进行比较
4 如果有一个列表首先达到末尾,则另一个长一点的列表大
5 如果遍历了所有的元素,而且所有元素都是相等的,也就是说两个列表相等,则返回0。
alist=[123,345] blist=[123,345.0] cmp(alist,blist) --0
type(obj) repr(obj) str(obj) type(obj) 函数和字符串类似,不再细说
序列类型函数
len() len函数返回列表的元素个数。
max() min() 对于列表元素中只是数字或字符串类型较多。
orted() reversed() 同样 对于列表元素中只是数字或字符串类型较多。
enumerate() zip()函数
sum()函数只适用于列表中元素都是数字类型.
alist=[123,345,567] len(alist) max(alist) min(alist) sorted(alist) for t in reversed(alist): print t for i ,x in enumerate(alist): print x blist=[1,2,3] for x,y in zip(alist,blist): print x,y sum(alist)
list() tuple() 函数
list tuple函数接收可迭代对象作为参数,=,并通过浅拷贝来创建一个新的列表或元组。
列表内建函数
重点:那些可以改变对象值得可变对象的方法是没有返回值的。
list.append(obj) 向列表中添加一个对象obj,返回None
list.count(obj) 返回一个对象obj在列表中出现的次数
list.extend(seq) 把序列seq的内容添加到列表中,返回None
list.index(obj,i=0,j=len(list)) 返回list[k]=obj的k值,并且k的范围在i<=k<j ,否则引发ValueError
list.insert(index,job) 在索引量为index的位置插入对象obj
list.pop(index=-1) 删除并返回指定位置的对象,默认是最后一个对象
list.remove(obj) 从列表中删除对象obj
list.reverse() 原地反转列表,返回None
list.sort(func=None,key=None,reverse=False) 以指定的方式排序列表中的成员,如果func和key参数指定则按照指定的方式比较各元素,如果reverse标志被置为True则列表反向排列,原地执行,返回None
>>> alist=['abcde','xxxx','zzz'] >>> alist.append('zzz') >>> alist=['abcde','xxxx','zzz'] >>> x=alist.append('zzz') >>> x >>> print x None >>> alist ['abcde', 'xxxx', 'zzz', 'zzz'] >>> alist.count() Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: count() takes exactly one argument (0 given) >>> alist.count('zzz') 2 >>> y=alist.extend(('123','456')) >>> y >>> print y None >>> alist ['abcde', 'xxxx', 'zzz', 'zzz', '123', '456'] >>> y=alist.extend('123') >>> print y None >>> alist ['abcde', 'xxxx', 'zzz', 'zzz', '123', '456', '1', '2', '3'] >>> alist.index('1') 6 >>> alist.insert('0') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: insert() takes exactly 2 arguments (1 given) >>> alist.insert(6,'0') >>> alist ['abcde', 'xxxx', 'zzz', 'zzz', '123', '456', '0', '1', '2', '3'] >>> alist.pop() '3' >>> alist.pop(index=-1) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: pop() takes no keyword arguments >>> alist.pop(-1) '2' >>> list.remove('1') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: descriptor 'remove' requires a 'list' object but received a 'str' >>> alist.remove('1') >>> alist ['abcde', 'xxxx', 'zzz', 'zzz', '123', '456', '0'] >>> x=alist.reverse() >>> print x None >>> alist ['0', '456', '123', 'zzz', 'zzz', 'xxxx', 'abcde'] >>> alist.sort() >>> alist ['0', '123', '456', 'abcde', 'xxxx', 'zzz', 'zzz'] >>> >>> alist.sort(reverse=True) >>> alist ['zzz', 'zzz', 'xxxx', 'abcde', '456', '123', '0']
列表特殊性
列表可以实现堆栈和队列