初学python(对比java语言不同) 第六篇

版权声明: https://blog.csdn.net/xclltssun/article/details/51121321

Python 列表

列表数据类型还有更多的方法。这里是列表对象的所有方法:

list.append(x)
添加一个元素到列表的末尾;相当于a[len(a):] = [x]。

list.extend(L)
将指定列表中的所有元素附加到另一个列表的末尾;相当于a[len(a):] = L。

list.insert(i, x)
在给定位置插入一个元素。第一个参数是插入的元素的索引,所以 a.insert(0, x) 在列表的最前面插入,a.insert(len(a), x) 相当于 a.append(x)。

list.remove(x)
删除列表中第一个值为 x 的元素。如果没有这样的元素将会报错。

list.pop([i])
删除列表中指定位置的元素并返回它。如果未指定索引,a.pop()将删除并返回列表中的最后一个元素。i为可选

list.index(x)
返回列表中第一个值为 x 的元素的索引。如果没有这样的元素将会报错。

list.count(x)
返回列表中 x 出现的次数。

list.sort(cmp=None, key=None, reverse=False)
原地排序列表中的元素(参数可以用来自定义排序方法,参考sorted()的更详细的解释)。

list.reverse()
原地反转列表中的元素。


>>> a = [66.25, 333, 333, 1, 1234.5]
>>> print a.count(333), a.count(66.25), a.count('x')
2 1 0
>>> a.insert(2, -1)
>>> a.append(333)
>>> a
[66.25, 333, -1, 333, 1, 1234.5, 333]
>>> a.index(333)
1
>>> a.remove(333)
>>> a
[66.25, -1, 333, 1, 1234.5, 333]
>>> a.reverse()
>>> a
[333, 1234.5, 1, 333, -1, 66.25]
>>> a.sort()
>>> a
[-1, 1, 66.25, 333, 333, 1234.5]
>>> a.pop()
1234.5
>>> a
[-1, 1, 66.25, 333, 333]

用列表作为栈,列表方法使得将List当作栈非常容易,最先进入的元素最后一个取出(后进先出)。使用append()将元素添加到栈顶。使用不带索引的pop()从栈顶取出元素。

也可以将列表当作队列使用,此时最先进入的元素第一个取出(先进先出);但是列表用作此目的效率不高。在列表的末尾添加和弹出元素非常快,但是在列表的开头插入或弹出元素却很慢 (因为所有的其他元素必须向后移一位)。如果要实现一个队列,可以使用collections.deque,它设计的目的就是在两端都能够快速添加和弹出元素。


在使用列表时有三个函数非常有用:filter()、map()和reduce()。

filter(function, sequence)返回的序列由function(item)结果为真的元素组成。如果sequence是一个字符串或元组,结果将是相同的类型;否则,结果将始终是一个列表。例如,若要计算一个不能被2和3整除的序列:

>>> def f(x): return x % 2 != 0 and x % 3 != 0
...
>>> filter(f, range(2, 25))
[5, 7, 11, 13, 17, 19, 23]

map(function, sequence) 为序列中的每一个元素调用 function(item) 函数并返回结果的列表。例如,计算列表中所有元素的立方值:

>>> def cube(x): return x*x*x
...
>>> map(cube, range(1, 11))
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]

reduce(function, sequence) 只返回一个值,它首先以序列的前两个元素调用函数 function,然后再以返回的结果和下一个元素继续调用,依此执行下去。例如,若要计算数字 1 到 10 的总和:

>>> def add(x,y): return x+y
...
>>> reduce(add, range(1, 11))
55

列表推导式提供了一个生成列表的简洁方法。应用程序通常会从一个序列的每个元素的操作结果生成新的列表,或者生成满足特定条件的元素的子序列。

>>> squares = []
>>> for x in range(10):
...     squares.append(x**2)
...
>>> squares
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
我们可以用下面的方式得到同样的结果:

squares = [x**2 for x in range(10)]
squares = map(lambda x: x**2, range(10))


del语句

有个方法可以从列表中根据索引而不是值来删除一个元素:del语句。这不同于有返回值的pop()方法。del语句还可以用于从列表中删除切片或清除整个列表。

>>> a = [-1, 1, 66.25, 333, 333, 1234.5]
>>> del a[0]
>>> a
[1, 66.25, 333, 333, 1234.5]
>>> del a[2:4]
>>> a
[1, 66.25, 1234.5]
>>> del a[:]
>>> a
[]

猜你喜欢

转载自blog.csdn.net/xclltssun/article/details/51121321