在入门篇中我们介绍过列表,本节中我们对列表进行复习并进行更多的介绍。
创建列表
创建空列表有两种方式,如下所示:
>>> name1 = list() # 创建空列表的方法1
>>> name2 = [] # 创建空列表的方法2
如果想创建带值的列表可以直接按照如下的方式创建:
>>> names = ['mike', 'ben', 'jack', 'lucy']
>>> info = ['abc', 123, 24.5]
判断值是否在列表中
我们可以通过in和not in来判断某个值是否在/不在列表中,如下所示:
>>> names = ['mike', 'ben', 'jack', 'lucy']
>>> 'mike' in names
True
>>> 'abc' in names
False
>>> 'abc' not in names
True
>>> 'ben' not in names
False
获取列表中的值
我们可以通过下标获取列表中对应位置的值,也可以通过切片获取列表中的一段的值。
>>> names = ['mike', 'ben', 'jack', 'lucy', 'lily']
>>> names[1] # 通过下标获取列表中的值
'ben'
>>> names[1:3] # 通过切片获取列表中一段值
['ben', 'jack']
>>> names[:2] # 切片不指定起始位置则从第一个元素开始
['mike', 'ben']
>>> names[2:] # 切片不指定终止位置则直到最后一个元素
['jack', 'lucy', 'lily']
查找列表中的值
有时我们想要查找某个值在列表中的位置,此时我们可以通过index()方法来实现。如果列表中存在这个值,那么就会返回下标。如果列表中没有这个值,那么就会报错ValueError。
>>> names = ['mike', 'ben', 'jack', 'lucy', 'lily']
>>> names.index('jack') # 查找'jack'的下标
2
>>> names.index('bob') # 查找'bob'的下标,由于'bob'不存在,会报错Value Error
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 'bob' is not in list
向列表中添加值
向列表中添加值有两个方法,一个是通过append()方法向列表末尾添加值,另一种方法是通过insert()方法向列表中的指定位置添加值。
>>> names = ['mike', 'ben']
>>> names.append('jack') # 向列表末尾追加一个值
>>> names
['mike', 'ben', 'jack']
>>> names.insert(1, 'lucy') # 向列表下标为1的位置添加'lucy'
>>> names
['mike', 'lucy', 'ben', 'jack']
删除列表中的值
如果想要删除列表中某下标对应的值则可以通过del删除。如果想删除列表中的某个值则可以通过remove()方法删除,如果列表中不存在这个值就会报错Value Error。
>>> names = ['mike', 'ben', 'jack', 'lucy', 'lily']
>>> del names[1] # 删除下标为1的值
['mike', 'jack', 'lucy', 'lily']
>>> names.remove('lucy') # 删除值'lucy'
>>> names
['mike', 'jack', 'lily']
>>> names.remove('bob') # 删除值'bob',由于'bob'不存在,会报错Value Error
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
修改列表中的值
可以通过下标改变列表中的值。
>>> names = ['mike', 'ben', 'jack', 'lucy', 'lily']
>>> names[1] = 'bob' # 将列表中下标为1的值改为'bob'
>>> names
['mike', 'bob', 'jack', 'lucy', 'lily']
>>> names[-1] = 'archie' # 将列表中倒数第一个值改为'archie'
>>> names
['mike', 'bob', 'jack', 'lucy', 'archie']
列表排序
对于数值的列表或者字符串的列表可以通过sort()方法进行排序。
>>> names = ['mike', 'ben', 'jack', 'lucy', 'lily']
>>> names.sort()
>>> names
['ben', 'jack', 'lily', 'lucy', 'mike']
>>> score = [76, 98, 45, 81]
>>> score
[45, 76, 81, 98]
sort()方法默认是升序排列,如果想按照降序排列则可以通过指定参数reverse=True来实现。
>>> names = ['mike', 'ben', 'jack', 'lucy', 'lily']
>>> names.sort(reverse=True)
>>> names
['mike', 'lucy', 'lily', 'jack', 'ben']
>>> score = [76, 98, 45, 81]
>>> score
[98, 81, 76, 45]
sort()方法对字符串进行排序的时候是根据ASCII码字符顺序,因此大写字母会排在小写字母之前。
>>> names = ['cat', 'ab', 'Bob', 'dog', 'Car', 'Alice']
>>> names.sort()
>>> names
['Alice', 'Bob', 'Car', 'ab', 'dog', 'cat']
获取列表长度
通过len()函数可以获得列表的长度。
>>> names = ['mike', 'ben', 'jack', 'lucy', 'lily']
>>> len(names)
5
列表连接和重复
通过"+"可以把两个列表拼接起来。
>>> [123, 456] + ['abc', 'def']
[123, 456, 'abc', 'def']
>>> names = ['mike', 'ben'] + ['jack', 'lucy', 'lily']
>>> names
['mike', 'ben', 'jack', 'lucy', 'lily']
通过"*"可以把列表重复多次。
>>> [123, 456]*3
[123, 456, 123, 456, 123, 456]
>>> names = ['mike', 'ben']*2
>>> names
['mike', 'ben', 'mike', 'ben']
列表遍历
有两种遍历列表的方法,一种方法是通过下标依次遍历列表中的每个值,另一种方法则是直接依次遍历列表中的每个值。
>>> names = ['mike', 'ben', 'jack', 'lucy', 'lily']
>>> for i in range(len(names)): # 通过下标遍历列表中的每个值
... print(names[i])
...
mike
ben
jack
lucy
lily
>>> for name in names: # 直接遍历列表中的每个值
... print(name)
...
mike
ben
jack
lucy
lily