Python基础04 列表

列表在Python中的应用相当广泛,前面我们的示例也大量地使用了列表。

这里我们主要了解下列表不同于元组和字符串的地方---列表是可变的,即可修改其内容。

 

一、函数list

通过list(实际上是一个类)可以使用字符串来创建一个列表。

>>> list('Hello')
['H', 'e', 'l', 'l', 'o']

 

实际上,可将任何序列(而不仅仅是字符串)作为list的参数。

 

二、基本的列表操作

可对列表执行所有的标准序列操作,如索引、切片、拼接和相乘。

下面主要主要一些能修改列表的方式。

 

1、给元素赋值

使用索引表示法给特定位置的元素赋值:

>>> x = [1, 1, 1]
>>> x[1] = 2
>>> x
[1, 2, 1]
>>>

不能给不存在的元素赋值:

>>> x[3] = 1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range

 

2、删除元素

使用del语句即可删除元素。

>>> x = [1, 2, 3]
>>> del x[1]
>>> x
[1, 3]

不能删除不存在的元素:

>>> x = [1, 2, 3]
>>> del x[3]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range

 

3、给切片赋值

切片是一项及其强大的功能,而能够给切片赋值让这项功能显得更加强大。

>>> str = list('Python')
>>> str
['P', 'y', 't', 'h', 'o', 'n']
>>> str[4:] = list('er')
>>> str
['P', 'y', 't', 'h', 'e', 'r']

 

可将切片替换为长度与其不同的序列。

>>> str = list('Python')
>>> str[1:] = list('rogram')
>>> str
['P', 'r', 'o', 'g', 'r', 'a', 'm']

 

还可在不替换原有元素的情况下插入新元素。

>>> numbers = [1, 5]
>>> numbers[1:1] = [2, 3, 4]
>>> numbers
[1, 2, 3, 4, 5]

numbers[1:1]相当于在索引为1的位置上进行了指定插入操作。

 

也可以通过类似的操作来删除切片。

>>> numbers
[1, 2, 3, 4, 5]
>>> numbers[1:4] = []
>>> numbers
[1, 5]

上述代码与del numbers[1:4]等效,但后者的可读性更好一些。

 

三、列表方法

方法是与对象(列表、数、字符串等)联系紧密的函数。调用格式如下:

object.method(arguments)

 

1、append

方法append用于将一个对象附加到列表末尾。

>>> lst = [1, 2, 3]
>>> lst.append(4)
>>> lst
[1, 2, 3, 4]

append不会返回修改后的新列表,而是直接修改旧列表。

 

2、clear

方法clear就地清空列表的内容。

>>> lst = [1, 2, 3]
>>> lst.clear()
>>> lst
[]

该功能类似于切片赋值语句 lst[:] = []。

 

3、copy

方法copy复制列表。

>>> a = [1, 2, 3]
>>> b= a.copy()
>>> b
[1, 2, 3]
>>> b[1] = 4
>>> b
[1, 4, 3]
>>> a
[1, 2, 3]

该功能类似于使用a[:]或者list(a),它们也都复制a。

 

4、count

方法count计算指定的元素在列表中出现了多少次。

>>> ['aa', 'bb', 'cc', 'dd', 'aa'].count('aa')
2
>>> x = [[1, 2], 1, 1, [2, 1, [1, 2]]]
>>> x.count(1)
2
>>> x.count([1, 2])
1

 

5、extend

使用一个列表来扩展另一个列表。

>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]
>>> b
[4, 5, 6]

 

6、index

方法index在列表中查找指定值第一次出现的索引。

>>> lst = ['aa', 'bb', 'cc', 'dd', 'aa']
>>> lst.index('aa')
0
>>> lst.index('bb')
1
>>> lst.index('ee')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 'ee' is not in list

指定元素不存在时会发生异常。

 

7、insert

方法insert用于将一个对象插入列表。

>>> a = [1, 2, 3]
>>> a.insert(1, 4)
>>> a
[1, 4, 2, 3]

 

8、pop

方法pop从列表中删除一个元素(默认为最后一个元素),并返回这一元素。

>>> x = [1, 2, 3]
>>> x.pop()
3
>>> x
[1, 2]
>>> x.pop(0)
1
>>> x
[2]

pop是唯一既能修改列表又返回一个非None值的列表方法。

Python没有提供push,但可使用append来替代。

 

9、remove

方法remove用于删除第一个为指定值的元素。

>>> lst = ['aa', 'bb', 'cc', 'dd', 'aa']
>>> lst.remove('aa')
>>> lst
['bb', 'cc', 'dd', 'aa']
>>> lst.remove('ee')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list

指定元素不存在时会发生异常。

 

10、reverse

方法reverse按相反的顺序排列列表中元素。

>>> x = [1, 2, 3]
>>> x.reverse()
>>> x
[3, 2, 1]

 

11、sort

方法sort用于对列表就地排序,不会返回排序后的列表的副本。

>>> x = [4, 5, 1, 6, 2, 3]
>>> x.sort()
>>> x
[1, 2, 3, 4, 5, 6]

 

12、高级排序

方法sort接受两个可选参数:key和reverse。

 

参数key是一个用于排序的函数,通过使用它来为每个元素创建一个键,再根据这些键对元素进行排序。

例如,要根据长度对元素进行排序,可将参数key设置为函数len:

>>> x = ['abcde', 'ab', 'abcd', 'abc']
>>> x.sort(key=len)
>>> x
['ab', 'abc', 'abcd', 'abcde']

 

参数reverse指出是否要按相反的顺序对列表进行排序。

>>> x = [4, 5, 1, 6, 2, 3]
>>> x.sort(reverse=True)
>>> x
[6, 5, 4, 3, 2, 1]

 

posted on 2020-03-05 16:00  麦克煎蛋  阅读(210)  评论(0编辑  收藏  举报