首页 > 代码库 > 列表(list)
列表(list)
列表是最常见的一种数据形式,是一种有序的序列,可以随时添加和删除其中的元素。它可以把大量的数据放在一起,可以对其进行集中处理。
列表是以方括号“[]”包围的数据集合,不同成员间以“,”分隔。列表中可以包含任何数据类型,也可以包含一个列表。列表可以通过序号来访问其中的成员。
1、列表内置方法
list.append(obj) |
在列表末尾添加新的对象 |
list.clear() |
删除列表中的所有项,相当于 del a[:] |
list.count(obj) |
统计某个元素在列表中出现的次数 |
list.copy() |
返回列表的一个浅拷贝 |
list.extend(seq) |
在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) |
list.index(obj) |
从列表中找出某个值第一个匹配项的索引位置 |
list.insert(index, obj) |
将对象插入列表 |
list.pop(obj=list[-1]) |
移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
list.remove(obj) |
移除列表中某个值的第一个匹配项 |
list.reverse() |
反向列表中元素 |
list.sort([func]) |
对原列表进行排序 |
(1)list.append(obj)——在列表末尾添加新的对象
>>> l = [‘python‘,3,7] >>> l = [‘c‘,3,6,2,‘java‘,5.4] >>> l [‘c‘, 3, 6, 2, ‘java‘, 5.4] >>> l.append(6) >>> l [‘c‘, 3, 6, 2, ‘java‘, 5.4, 6]
(2)list.clear()——删除列表中的所有项,相当于 del a[:]
>>> l [‘c‘, 3, 6, 2, ‘java‘, 5.4, 6] >>> l.clear() >>> l []
(3)list.count(obj)——统计某个元素在列表中出现的次数
>>> l = [‘c‘, 3, 6, 2, ‘java‘, 5.4, 6] >>> l.count(6) 2 >>> l.count(‘6‘) 0
(4)list.copy()——返回列表的一个浅拷贝
>>> l2 = l.copy() >>> l2 [‘c‘, 3, 6, 2, ‘java‘, 5.4, 6]
(5)list.extend(seq)——在列表末尾追加另一个序列中的多个值(用新列表扩展原来的列表)
>>> l [‘c‘, 3, 6, 2, ‘java‘, 5.4, 6] >>> l.extend([2,‘a‘]) >>> l [‘c‘, 3, 6, 2, ‘java‘, 5.4, 6, 2, ‘a‘] >>> l.extend(‘python‘) >>> l [‘c‘, 3, 6, 2, ‘java‘, 5.4, 6, 2, ‘a‘, ‘p‘, ‘y‘, ‘t‘, ‘h‘, ‘o‘, ‘n‘]
(6)list.index(obj)——从列表中找出某个值第一个匹配项的索引位置
>>> l [‘c‘, 3, 6, 2, ‘java‘, 5.4, 6, 2, ‘a‘, ‘p‘, ‘y‘, ‘t‘, ‘h‘, ‘o‘, ‘n‘] >>> l.index(2) 3
(7)list.insert(index, obj)——将对象插入列表
>>> l [‘c‘, 3, 6, 2, ‘java‘, 5.4, 6, 2, ‘a‘, ‘p‘, ‘y‘, ‘t‘, ‘h‘, ‘o‘, ‘n‘] >>> l.insert(5,7) >>> l [‘c‘, 3, 6, 2, ‘java‘, 7, 5.4, 6, 2, ‘a‘, ‘p‘, ‘y‘, ‘t‘, ‘h‘, ‘o‘, ‘n‘]
(8)list.pop(obj=list[-1])——移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
>>> l [‘c‘, 3, 6, 2, ‘java‘, 7, 5.4, 6, 2, ‘a‘, ‘p‘, ‘y‘, ‘t‘, ‘h‘, ‘o‘, ‘n‘] >>> s = l.pop() >>> l [‘c‘, 3, 6, 2, ‘java‘, 7, 5.4, 6, 2, ‘a‘, ‘p‘, ‘y‘, ‘t‘, ‘h‘, ‘o‘] >>> s ‘n‘
(9)list.remove(obj)——移除列表中某个值的第一个匹配项
>>> l [‘c‘, 3, 6, 2, ‘java‘, 7, 5.4, 6, 2, ‘a‘, ‘p‘, ‘y‘, ‘t‘, ‘h‘, ‘o‘] >>> l.remove(6) >>> l [‘c‘, 3, 2, ‘java‘, 7, 5.4, 6, 2, ‘a‘, ‘p‘, ‘y‘, ‘t‘, ‘h‘, ‘o‘]
(10)list.reverse()——反向列表中元素
>>> l [‘c‘, 3, 2, ‘java‘, 7, 5.4, 6, 2, ‘a‘, ‘p‘, ‘y‘, ‘t‘, ‘h‘, ‘o‘] >>> l.reverse() >>> l [‘o‘, ‘h‘, ‘t‘, ‘y‘, ‘p‘, ‘a‘, 2, 6, 5.4, 7, ‘java‘, 2, 3, ‘c‘]
(11)list.sort([func])——对原列表进行排序
>>> lst = [2,6,4,9,5] >>> lst.sort() >>> lst [2, 4, 5, 6, 9] >>> alst = [‘hadoop‘,‘python‘,‘linux‘,‘java‘] >>> alst.sort() >>> alst [‘hadoop‘, ‘java‘, ‘linux‘, ‘python‘] >>> alst.sort(key = len) >>> alst [‘java‘, ‘linux‘, ‘hadoop‘, ‘python‘]
2、列表推导式
推导式是Python中很强大的、很受欢迎的特性,具有语言简洁,速度快等优点。推导式包括:
列表推导式、字典推导式、集合推导式、嵌套列表推导式。
列表推导式提供了一种创建列表的简洁方法。列表推导式书写形式:
[表达式 for 变量 in 列表] 或者 [表达式 for 变量 in 列表 if 条件]
举例:
(1)列表平方
>>> lst = [2,6,3,5,9] >>> [ x**2 for x in lst] [4, 36, 9, 25, 81]
(2)列表偶数
>>> [ x for x in lst if x%2 == 0] [2, 6]
(3)移除元音字母
>>> s = ‘this is list example‘ >>> vowels = ‘aeiou‘ >>> [ i for i in s if i not in vowels] [‘t‘, ‘h‘, ‘s‘, ‘ ‘, ‘s‘, ‘ ‘, ‘l‘, ‘s‘, ‘t‘, ‘ ‘, ‘x‘, ‘m‘, ‘p‘, ‘l‘] >>> ‘‘.join([ i for i in s if i not in vowels]) ‘ths s lst xmpl‘
(4)求(x,y)其中x是0-5之间的偶数,y是0-5之间的奇数组成的元祖列表
>>> [(x,y) for x in range(5) if x%2 == 0 for y in range(5) if y%2 == 1] [(0, 1), (0, 3), (2, 1), (2, 3), (4, 1), (4, 3)]
3、生成器表达式
Python还支持另外一种和列表表达式类似的结构,叫做生成器表达式(generator expression),除了它有一种称之为“惰性计算”的特点以外,它和列表推导式的用法基本一致。生成器表达式的语法和列表推导式一样,只不过生成器表达式是被()括起来的,而不是[]。
生成器表达式并不真正创建列表, 而是返回一个生成器,它的工作方式是每次处理一个对象,而不是一口气处理和构造整个数据结构,这样做的潜在优点是可以节省大量的内存。
>>> g = (i for i in range(10) if i%2) >>> g <generator object <genexpr> at 0x00000000036274C0> >>> for i in g: print(i)
1 3 5 7 9
参考文档:
<http://python.jobbole.com/80823/>
<http://www.runoob.com/python/python-lists.html>
列表(list)