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']
列表特殊性
列表可以实现堆栈和队列