列表是能保留任意数目的Python对象的灵活的容器。
- 赋值
- 访问
- 更新(
append()
) - 删除(
del
、pop()
)
序列类型操作符
切片([]和[:])
成员关系操作(in, not in)
连接关系符(+)
extend()
方法可代替连接操作符把一个列表的内容添加到另一个中去。
注: 使用 extend()
方法比连接操作的一个优点是它实际上是把新列表添加到了原有列表里面,而不是像连接操作符那样新建一个列表。
内建函数 append()
,向列表中添加一个对象obj。
- 重复操作符(*)
标准类型函数 cmp()
序列类型函数
len()
max()
和min()
sorted()
和reversed()
sorted
函数可以将任何序列返回为一个新的有序列表:
sorted([4,6,2,6,2,1])
[1,2,2,4,6,6]
reversed
函数用于按逆序迭代序列中的元素:
list(reversed(range(10)))
[9,8,7,6,5,4,3,2,1,0]
enumerate()
和zip()
enumerate
函数可以逐个返回序列的(i, value)元组:
for i, value in enumerate(collection):
# use value to do something
zip
函数用于将多个序列中的元素配对,从而产生一个新的++元组列表++:
seq1 = ['hello', 'world']
seq2 = ['one', 'two']
zip(seq1, seq2)
[('hello', 'one'), ('world', 'two')]
巧妙用法:对该序列进行解压
pitchers = [('Nolan', 'Ryan'), ('Roger', 'Clemens')]
first_names, last_names = zip(*pitchers)
first_names
('Nolan','Roger')
last_names
('Ryan', 'Clemens')
sum()
list()
和tuple()
列表类型內建函数
列表函数 | 作用 |
---|---|
list.append(obj) | 向列表中添加一个++对象obj++ |
list.count(obj) | 返回一个对象obj在列表中出现的次数 |
list.extend(seq) | 把++序列seq++的内容添加到列表中。 |
list.index(obj,i=0,j=len(list)) | 返回list[k]==obj的k值,并且k的范围在 1<=k<=j; 否则引发++ValueError异常++ |
list.insert(index,obj) | 在索引量为index的位置插入对象obj |
list.pop(index=-1) | ++删除并返回++指定位置的对象,默认是最后一个元素。 |
list.remove(obj) | 从列表中删除对象obj |
list.reverse() | 原地翻转列表 |
list.sort(func=None,key=None,reverse=False) | 默认排序算法是归并排序 |
注:
- sort()
、extend()
、reverse()
中原地执行操作。
extend()
方法的参数支持任何可迭代对象。
用列表构建其他数据结构
堆栈
#!/usr/bin/env python
stack = []
def pushit():
stack.append(raw_input('Enter New string: ').strip())
def popit():
if len(stack) == 0:
print 'cannot pop from an empty stack!'
else:
print 'Removed [', `stack.pop()`, ']'
def viewstack():
print stack #call str() internally
队列
#!/usr/bin/env python
queue = []
def enQ():
queue.append(raw_input('Enter new string: ').strip())
def deQ():
if len(queue) == 0:
print 'Cannot pop from an empty queue!'
else:
print 'Removed [', `queue.pop(0)`, ']'
def viewQ():
print queue #call str() internally