|
python 链表操作
list=[1, 2, 3, 455, '1qq']
sList = ['a', 'b', 'c']
1. list.append('aaa') #把'aaa'元素添加到链表的结尾,相当于 list[len(list):] = 'aaa'
list=[1, 2, 3, 455, '1qq', 'aaa']
2. list.extend(sList) #把链表sList元素添加到list链表,相当于 list[len(list):] = sList
list=[1, 2, 3, 455, '1qq', 'a', 'b', 'c']
3. list.insert(i,x) # 在i位置内插入x元素
4. list.remove(x) #删除第一个为x的元素
5. list.pop() # 从链表的指定位置删除元素,并将其返回,当i为空即list.pop()删除最后一个元素
6. list.index(x) #返回链表中第一个元素为x的索引,如果没有匹配的元素则报错
7. list.count(x) #返回x在链表中出现的次数
8. list.sort() #对链表的元素进行适当地排序
9. list.reverse() #对链表的元素进行倒序
del 语句,del list[0] 表示删除链表第一个元素,del list 表示删除整个链表
-------------------------------------------------------------------------------------------------------
把链表当做堆栈使用:
list = ['aaa', 'bbb', 'ccc', 'ddd']
进栈:
list.append('eee')
出栈:
list.pop()
-------------------------------------------------------------------------------------------------------
把链表当做队列使用:
list = ['aaa', 'bbb', 'ccc', 'ddd']
进队列:
list.append('eee')
出队列:
list.pop(0)
-------------------------------------------------------------------------------------------------------
链表内置函数:filter()、map()、reduce() (filter() map() 返回的是一个链表,reduce返回的是一个单值)
filter()
filter(function, sequence) 返回一个序列sequence ,包括给定序列中所有元素调用function(item) 返回值为true的元素
eg:
def f(x):
return (x % 2 != 0 and x % 3 != 0)
list = filter(f,range(2, 25)) 返回值为[5,7,11,13,17,21,23]
map()
map(function, sequence) 为序列里面每个元素依次调用function(item),并将返回值组成链表返回
eg:
def cube(x):
return x*x*x
list = map(cube, range(1, 5)) 返回值为[1,8,27,64]
reduce()
reduce(function, sequence) 返回一个单值,首先以序列的前两个元素调用函数,得到返回值在和第三个元素调用,依次执行下去
eg:
def add(x, y):
return x+y
print reduce(add, range(1, 10)) 返回值为
--------------------------------------------------------------------------------------------------------
链表推导式:
每一个链表推导式包括在一个for语句之后的表达式,零或多个for或if语句。返回值是由for或if子句之后的表达式得到的元素组成的链表。如果想要得到一个元组,必须要加上括号。
eg:
list=[' apple ', ' pear ', ' banana']
list1 = [ fruit.strip() for fruit in list ] 返回 list1 =['apple', 'pear', 'banana']
vec = [ 2 , 4 , 6 ]
ved = [ 4 , 5 , 6 ]
vec1 = [ 3*x for x in vec ] 返回值为 [ 6, 12, 18 ]
vec2 = [ 4*x for x in vec if x > 3 ] 返回值为 [ 16, 24 ]
vec3 = [ 3*x for x in vec if x < 2 ] 返回值为 [ ]
vec4 = [ [x,3*x] for x in vec ]
vec5 = [ ( x,4*x ) for x in vec ]
vec6 = [ x*y for x in vec for y in ved ]
-------------------------------------------------------------------------------------
enumerate()遍历链表
list = ['aaa', 'bbb', 'ccc', 'ddd']
for i,v in enumerate(list):
print i,v |
|