一、列表List的常用方法


  • list.append(x)

    Add an item to the end of the list; equivalent to a[len(a):] = [x].


  • list.extend(L)

    Extend the list by appending all the items in the given list; equivalent to a[len(a):] = L.

  • list.insert(ix)

    Insert an item at a given position. The first argument is the index of the element before which to insert, so a.insert(0, x) inserts at the front of the list, and a.insert(len(a), x) is equivalent to a.append(x).

  • list.remove(x)

    Remove the first item from the list whose value is x. It is an error if there is no such item

  • list.pop([i])

    Remove the item at the given position in the list, and return it. If no index is specified, a.pop() removes and returns the last item in the list. (The square brackets around the i in the method signature denote that the parameter is optional, not that you should type square brackets at that position. You will see this notation frequently in the Python Library Reference.)

  • list.index(x)

    Return the index in the list of the first item whose value is x. It is an error if there is no such item

  • list.count(x)

    Return the number of times x appears in the list

  • list.sort(cmp=Nonekey=Nonereverse=False)

    Sort the items of the list in place (the arguments can be used for sort customization, see sorted() for their explanation)

    • list.reverse()

      Reverse the elements of the list, in place.

    例子:


    

In [1]: a = [66.25, 333, 333, 1, 1234.5]
In [2]: print a.count(333), a.count(66.25), a.count('x')
2 1 0
In [3]: a.insert(2, -1)
In [4]: a.append(333)
In [5]: a
Out[5]: [66.25, 333, -1, 333, 1, 1234.5, 333]
In [6]: a.index(333)
Out[6]: 1
In [7]: a.remove(333)
In [8]: a
Out[8]: [66.25, -1, 333, 1, 1234.5, 333]
In [9]: a.reverse()
In [10]: a
Out[10]: [333, 1234.5, 1, 333, -1, 66.25]
In [11]: a.sort()
In [12]: a
Out[12]: [-1, 1, 66.25, 333, 333, 1234.5]
In [13]: a.pop()
Out[13]: 1234.5
In [14]: a
Out[14]: [-1, 1, 66.25, 333, 333]


二、列表作为堆栈

In [15]: stack = [3, 4, 5]
In [16]: stack.append(6)
In [17]: stack.append(7)
In [18]: stack
Out[18]: [3, 4, 5, 6, 7]
In [19]: stack.pop()
Out[19]: 7
In [20]: stack
Out[20]: [3, 4, 5, 6]
In [21]: stack.pop()
Out[21]: 6
In [22]: stack.pop()
Out[22]: 5


三、列表作为队列


    要高效的使用队列,使用collection.deque

In [23]: from collections import deque
In [24]: queue = deque(["Eric", "John", "Michael"])
In [25]: queue.append("Terry")
In [26]: queue.append("Graham")
In [27]: queue.popleft()
Out[27]: 'Eric'
In [28]:  queue.popleft()
Out[28]: 'John'
In [29]: queue
Out[29]: deque(['Michael', 'Terry', 'Graham'])

    

四、编程常用函数


    有三个内置的函数,与列表结合使用的时候非常有用:filter(),map(),reduce()


    

    filter(function,sequence)函数返回一组序列,这组序列包含了使用函数function(sequence)返回值为真的元素,如果sequence为String 或者Tuple,那么返回的结果是同一类型,否则结果类型都为list:


    

In [30]: def f(x): return x % 3 == 0 or x % 5 == 0
In [31]: filter(f, range(2, 25))
Out[31]: [3, 5, 6, 9, 10, 12, 15, 18, 20, 21, 24]


    map(function,sequence)为序列sequence的每个元素调用函数function(sequence),并返回一组结果组列表:

    

    

In [32]: def cube(x): return x*x*x
In [33]: map(cube, range(1, 11))
Out[33]: [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
In [34]: seq = range(8)
In [35]: def add(x, y): return x+y
In [36]: map(add, seq, seq)
Out[36]: [0, 2, 4, 6, 8, 10, 12, 14]


    reduce(function,sequence)函数返回的是单个数为前个数调用函数的结果,并且将结果作为值与下一个元素进行函数调用:

In [37]: def add(x,y): return x+y
In [38]: reduce(add, range(1, 11))
Out[38]: 55

    

In [39]: def sum(seq):
   ....:     def add(x,y): return x+y
   ....:     return reduce(add, seq, 0)
   ....: 
In [40]: sum(range(1, 11))
Out[40]: 55
In [41]: sum([])
Out[41]: 0

        

五、列表解析(list comprehension)


    普通的创建列表的方式为:

In [42]: squares = []
In [43]: for x in range(10):
   ....:     squares.append(x**2)
   ....:     
In [44]: squares
Out[44]: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

    也可以使用以下的方式创建:

In [45]: squares = [x**2 for x in range(10)]

    也等同于:

In [46]: squares = map(lambda x: x**2, range(10))

    

In [47]: [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
Out[47]: [(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]

    等同于:

In [48]: combs = []
In [49]: for x in [1,2,3]:
   ....:     for y in [3,1,4]:
   ....:         if x != y:
   ....:             combs.append((x, y))
   ....:             
In [50]: combs
Out[50]: [(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]