序列都可以进行的操作包括索引,切片,加,乘,检查成员。
Python有6个序列的内置类型,但最常见的是列表和元组。
列表
列表的数据项不需要具有相同的类型。
>>> list01 = ['runoob', 786, 2.23, 'john', 70.2]
>>> list02 = [123, 'john']
>>> names = ['a','b','c','d']
截取
和大多数编程语言一样,列表的第一个元素的索引是0,而不是1。如果要输出最后一个元素可以使用-1,倒数第二个可以使用-2,以此类推。
>>> print names[0]
>>> print names[-1]
>>> print names[0:3]
a
d
['a', 'b', 'c']
修改/添加/删除
修改:其实就是对元素的重新赋值
>>> names[0]='A'
>>> print(names)
['A', 'b', 'c', 'd']
末尾添加:append()
>>> names.append('e')
>>> print(names)
['a', 'b', 'c', 'd', 'e']
删除:pop,remove,del
1) pop()
>>> names.pop()
'e'
如果没有指定下标,则默认会删除最后一个元素
>>> names.pop(2)
'c'
2) remove()
>>> names.remove('e')
>>> names
['a', 'b', 'c', 'd']
3)del
>>> del names[4]
>>> names
['a', 'b', 'c', 'd']
查找元素所在位置:index()
>>> names.index('c')
2
统计元素的次数:count()
>>> names.append('d')
>>> names.count('d')
2
反转:reverse()
>>> names.reverse()
>>> names
['d', 'c', 'b', 'a']
清空:clear()
>>> names.clear()
>>> names
[]
插入: insert(索引,字符串)
>>> names.insert(0,'hello')
>>> print(names)
['hello', 'a', 'b', 'c', 'd']
排序:sort()按照ascii码来进行排序
>>> names.sort()
>>> print(names)
['a', 'b', 'c', 'd', 'hello']
拼接两个列表:extend()
>>> names = ['a','b','c','d']
>>> place = ['o','p','q']
>>> names.extend(place)
>>> print(names)
['a', 'b', 'c', 'd', 'o', 'p', 'q']
- 第一种复制:
>>> names = ['a','b','c','d']
>>> names1 = names
>>> names1[0] = 'A'
>>> print(id(names),' ',names)
>>> print(id(names1),' ',names1)
140132297498568 ['A', 'b', 'c', 'd']
140132297498568 ['A', 'b', 'c', 'd']
我们发现,修改names1影响了names,这是因为通过ID函数发现,二者的ID是相同的。(此时相当于共用一个内存空间)。
- 第二种复制(浅复制):
>>> names = ['a','b','c','d']
>>> names1 = names[:]
>>> #names1 = list(names) #效果同上
>>> #names1 = [i for i in names] #效果同上
>>> #names1=copy.copy(names) #效果同上
>>> names1[0] = 'A'
>>> print(id(names),' ',names)
>>> print(id(names1),' ',names1)
140165287773768 ['a', 'b', 'c', 'd']
140165287334472 ['A', 'b', 'c', 'd']
通过ID函数发现,二者ID不相同。修改names1没有影响names
注:浅复制虽然ID是不同的,但是值的修改并不总是独立的,比如下面这篇博客使用append方法时,二者会互相影响:
http://blog.csdn.net/a6225301/article/details/48833125
- 第三种复制(深复制)
>>> import copy
>>> names = ['a','b','c','d']
>>> names1=copy.deepcopy(names)
>>> names1[0] = 'A'
>>> print(id(names),' ',names)
>>> print(id(names1),' ',names1)
140635533511880 ['a', 'b', 'c', 'd']
140635533584200 ['A', 'b', 'c', 'd']
二者ID不同,深复制后的两个变量则指向的是两个不同的对象。