首页 > 代码库 > 列表(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)