Python 列表


列表是可包含多种类型数据的序列。


列表元素也可以是列表等各种数据类型。列表是可以更改的。

创建列表

列表有下面几种创建方式:

  • 列表元素前后加上一个方括号,列表元素之间使用逗号分隔。例如:[1, 2, 'hello']。
  • 通过列表运算符创建列表。例如:[1, 2] * 3。
  • 通过列表推导创建列表。例如:[x * 2 for x in list]。

下面是创建列表的例子:

#!/usr/bin/python

print([1, 2, 'hello'])      # [1, 2, 'hello']
print([1, 'hello'] * 2)     # [1, 'hello', 1, 'hello']
print([1, 2, 'hello'] + ['world'])  # [1, 2, 'hello', 'world']
print([1, 2, 'hello'][1 : 3])       # [2, 'hello']
print([x * 2 for x in [1, 2, 3]])   # [2, 4, 6]

列表运算符

有下面几个运算符用于列表:

  • ==:比较两个列表是否相等。
  • +:合并两个列表为一个列表。
  • *:重复列表元素指定次数。
  • []:列表索引,返回指定索引处的元素。第1个元素索引为0,也可以用负数表示索引,最后1个元素索引是-1,倒数第2个元素索引是-2。
  • [:]:对列表切片。:前面是开始索引,后面是结束索引(返回列表不包含结束索引处的元素)。如果省略开始和结束索引,表示开始索引是0,结束索引是最后位置。也可以使用负数表示索引位置。
  • in:对象是否包含在列表中。
  • not in:对象是否没包含在列表中。

下面是列表运算符的例子:

#!/usr/bin/python

print([1, 2] == [1, 2]) # True

print([1, '2'] * 2)     # [1, '2', 1, '2']
print([1, 2, 'hello'] + ['world'])  # [1, 2, 'hello', 'world']
print([1, 2, 'hello'][1 : 3])   # [2, 'hello']

print(1 in [1, 2])      # True
print(1 not in [1, 2])  # False

列表推导

列表推导(List comprehension)把一个列表映射为一个新的列表。

列表推导分为两部分,第一部分描述新列表元素的生成过程,第二部分是for语句和if语句,迭代取出旧列表的元素。

#!/usr/bin/python

print([x * 2 for x in [1, 2, 3]])   # [2, 4, 6]
print([x * y for x in range(3) for y in [5, 6]])    # [0, 0, 5, 6, 10, 12]
print([x * y for x in range(3) for y in [5, 6] if x % 2 == 0])  # [0, 0, 10, 12]

增加、更改和删除元素

  • 列表中增加一个元素使用append方法,增加多个元素使用extend方法。使用insert方法在指定位置插入一个元素。
  • 使用[]运算符更改列表的一个元素,使用[:]运算符更改多个元素。
  • 使用del语句可以删除列表的一个元素,多个元素或整个列表。

下面是增加、更改和删除元素的例子:

#!/usr/bin/python

lst = [1, 2]
lst.append(3)
print(lst)      # [1, 2, 3]
lst.extend([4, 5])
print(lst)      # [1, 2, 3, 4, 5]
lst.insert(1, ['A', 'B'])
print(lst)      # [1, ['A', 'B'], 2, 3, 4, 5]

print('')
lst[0] = 'hello'
lst[1][0] = 'z'
print(lst)      # ['hello', ['z', 'B'], 2, 3, 4, 5]
lst[1:3] = ['red', 'white', 'yellow']
print(lst)      # ['hello', 'red', 'white', 'yellow', 3, 4, 5]

print('')
del lst[0]
print(lst)      # ['red', 'white', 'yellow', 3, 4, 5]
del lst[1:3]
print(lst)      # ['red', 3, 4, 5]
del lst
# print(lst) # error: NameError: name 'lst' is not defined

常用列表函数

  • all:如果列表中的所有元素都为True或列表是空的,则返回True。
  • any:如果列表中有一个元素为True,则返回True。如果列表是空的,返回False。
  • enumerate:返回一个枚举对象,包含列表中所有元素的索引和值为一个元组。
  • len:返回列表的长度。
  • list:转换一个可迭代对象(元组、字符串、集合、字典)为一个列表对象。
  • max:返回列表中最大的元素。
  • min:返回列表中最小的元素。
  • sorted:返回一个新的排过序的列表,不更改参数列表。
  • sum:返回列表中元素的和。

下面是常用列表函数的例子:

#!/usr/bin/python

list = ['red', 'blue']

for e in enumerate(list):
    print(e, end=', ')  # (0, 'red'), (1, 'blue'),

print('\n', sorted(list))   # ['blue', 'red']

常用列表方法

  • append:在列表的最后增加一个元素。
  • count:返回指定元素在列表中出现的次数。
  • extend:在列表的最后增加指定序列的所有内容。
  • index:返回指定元素在列表中第一次出现的索引。
  • insert:在列表的指定索引处插入一个元素。
  • pop:从列表中删除最后一个元素,并返回这个元素。
  • remove:从列表中删除指定元素。
  • reverse:反转列表中元素中的位置。
  • sort:对列表排序,可以指定排序函数。

下面是常用列表方法的例子:

#!/usr/bin/python

list = ['Red', 'blue']

print(list.index('blue'))   # 1

print(list)     # ['Red', 'blue']
print(list.sort(key = lambda x : x.lower()))    # None
print(list)     # ['blue', 'Red']

list.remove('Red')
print(list)     # ['blue']