列表可以说是python最重要的数据结构,因为python具有正交性,所以我们可以从list中的特性推测出其他数据结构的基本的特性。python具备了鸭子特性和,让其语言具有极强的表达性。
1 list()函数
list(obj)可以把一切序列转换为list。同时我们可以推测只要是序列,所以obj可以是字符串,元组和任何可以迭代的序列。同时我们可以推测具有tuple(),map()等类型函数。
2 基本的列表操作
2.1 赋值
x = [ 0,1,2]
x [1] = 2
2.2 删除元素
del x[0]
2.3 分片赋值
可以同时对多个元素赋值,也可以使用与原序列不等长的序列将分片替换。
更强大的是分片赋值可以在不需要替换任何原有元素的情况下插入新元素。
x [1:1] = [2,3,4]
2.4 列表方法
1 append
append 方法用于在列表末尾追加新的对象。append不是简单的返回一个修改过的新列表,而是直接修改原理的列表。
list = [1,2,3]
list.append(4)
2 count
count方法用于统计元素在列表中出现的次数。
list .count()
3 extend
extend 方法可以在列表的末尾追一次性追加另一个序列中的多个值。可以用一个列表扩展另一个列表。
a = [1,2,3]
b = [4,5,6]
a.extend(b)
这样的效率高于 a = a+ b
4 index
index 方法用于在列表中找出和参数匹配项的索引位置。
5 insert
将对象插入list中。也可以用分片赋值来实现。
6 pop
pop方法会移除列表中的一个元素,(默认是最后一个)并返回该元素的值。
>>>x = [1,2,3]
>>>x.pop()
3
>>>x
[1,2]
>>>x.pop[0]
1
>>>x
[2]
pop方法是唯一一个能修改列表又返回元素值的列表方法。
利用pop方法可以实现一种常见的数据结构——栈。(pop,append)
>>>x = [1,2,3]
>>>x.append(x.pop())
>>>x
[1,2,3]
7 remove()
remove方法用于移除列表中的第一个匹配项:
8 reverse()
将列表中的元素反向存放。
9 sort()
sort方法用于在原位置对列表进行排序。意味着改变原来的列表。所以有时想要得到一张已排序的列表,又不希望破坏本来的
列表,可以用sorted(obj).在python中既不是传值也不是传址,传的是对象的引用。这是很重要的性质。所以对于列表这样的可变对象来说
>>> list1 = [1,2,3]
>>>list2 = [
10 高级排序
如果希望元素按照特定的方式进行排序(而不是sort函数默认的方式,即根据Python的默认排序规则按升序排列元素)那么可以通过compare(x,y)的形式自定义比较函数,compare(x,y)函数会在x < y 时返回负数,在 x > y时返回正数,则在 x = y 则返回0。定义好函数之后,就可以把函数提供给sort方法作为参数,内建函数的cmp就是按照这样实现的。
>>>cmp(42,32)
1
>>>cmp(99,100)
0
>>>cmp(10,10)
0
>>>numbers = [5,2,9,7]
>>>numbers.sort(cmp)
>>>numbers
[2,5,7,9]
sort方法有另外两个可选的参数———key和reverse,如果要使用它们,那么就需要通过名字来指定。(关键字参数)
key和cmp类似———必须提一个在排序过程中使用的函数。另一个关键字参数是简单的布尔值。(True和Flase)来指明列表是否要继续进行反向排序。