0%

第三章 列表简介

3.1 列表是什么

列表由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字0~9或所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系。列表通常包含多个元素,因此给列表指定一个表示复数的名称(如letters、digits 或 names)是个不错的主意。

在Python中,用方括号 [ ] 表示列表,并用逗号分隔其中的元素。

1
2
names = ['zhangsan', 'lisi', 'wangermazi']
print(names)

输出结果为:

1
['zhangsan', 'lisi', 'wangermazi']

3.1.1 访问列表元素

要访问列表元素,可指出列表的名称,再指出元素的索引,并将后者放在方括号内。

1
2
names = ['zhangsan', 'lisi', 'wangermazi']
print(names[0])

输出结果为:

1
zhangsan

3.1.2 索引从0而不是1开始

在Python中,第一个列表元素的索引为0,而不是1。

Python为访问最后一个列表元素提供了一种特殊语法。通过将索引指定为-1,可让Python返回最后一个列表元素。

1
2
names = ['zhangsan', 'lisi', 'wangermazi']
print(names[-1])

输出结果为:

1
wangermazi

这种约定也适用于其他负数索引。例如,索引-2返回倒数第二个列表元素,索引-3返回倒数第三个列表元素,依此类推。

3.2 修改、添加和删除元素

创建的大多数列表将是动态的,这意味着列表创建后,将随着程序的运行增删元素。

3.2.1 修改列表元素

要修改列表元素,可指定列表名和要修改的元素索引,再指定该元素的新值。

1
2
3
4
5
names = ['zhangsan', 'lisi', 'wangermazi']
print(names)

names[2] = 'normal people'
print(names)

输出结果为:

1
2
['zhangsan', 'lisi', 'wangermazi']
['zhangsan', 'lisi', 'normal people']

3.2.1 在列表中添加元素

  1. 在列表末尾添加元素

在列表中添加新元素时,最简单的方式是将元素附加(append)到列表。给列表附加元素时它将添加到列表末尾。

1
2
3
4
5
names = ['zhangsan', 'lisi', 'wangermazi']
print(names)

names.append('normal people')
print(names)

输出结果为:

1
2
['zhangsan', 'lisi', 'wangermazi']
['zhangsan', 'lisi', 'wangermazi', 'normal people']
  1. 在列表中插入元素

使用方法 insert() 可在列表的任何位置添加新元素。为此,需要指定新元素的索引和值。

1
2
3
4
5
names = ['zhangsan', 'lisi', 'wangermazi']
print(names)

names.insert(1, 'normal people')
print(names)

输出结果为:

1
2
['zhangsan', 'lisi', 'wangermazi']
['zhangsan', 'normal people', 'lisi', 'wangermazi']

这种操作将列表中插入位置开始到列表末尾的每一个元素都右移一个位置。

3.2.3 从列表中删除元素

可以根据位置或值来删除列表中的元素。

  1. 使用del语句删除元素

如果知道要删除的元素在列表中的位置,可使用 del 语句。

1
2
3
4
5
names = ['zhangsan', 'normal people', 'lisi', 'wangermazi']
print(names)

del names[1]
print(names)

输出结果为:

1
2
['zhangsan', 'normal people', 'lisi', 'wangermazi']
['zhangsan', 'lisi', 'wangermazi']
  1. 使用方法pop()删除元素

方法 pop() 删除列表末尾的元素,并让你能够接着使用它。术语弹出(pop)源自这样的类比:列表就像一个栈,而删除列表末尾的元素相当于弹出栈顶元素。

1
2
3
4
5
6
names = ['zhangsan', 'lisi', 'wangermazi', 'normal people']
print(names)

popped_name = names.pop()
print(popped_name)
print(names)

输出结果为:

1
2
3
['zhangsan', 'lisi', 'wangermazi', 'normal people']
normal people
['zhangsan', 'lisi', 'wangermazi']
  1. 弹出列表中任何位置处的元素

可以使用pop()来删除列表中任意位置的元素,只需在圆括号中指定要删除元素的索引即可。

1
2
3
4
5
6
names = ['zhangsan', 'normal people', 'lisi', 'wangermazi']
print(names)

popped_name = names.pop(1)
print(popped_name)
print(names)

输出结果为:

1
2
3
['zhangsan', 'normal people', 'lisi', 'wangermazi']
normal people
['zhangsan', 'lisi', 'wangermazi']

如果不确定该使用del语句还是pop()方法,下面是一个简单的判断标准:如果要从列表中删除一个元素,且不再以任何方式使用它,就使用del语句;如果要在删除后还能继续使用它,就使用方法pop()。

  1. 根据值删除元素

如果只知道要删除的元素的值,可使用方法 remove()

1
2
3
4
5
names = ['zhangsan', 'normal people', 'lisi', 'wangermazi']
print(names)

names.remove('normal people')
print(names)

输出结果为:

1
2
['zhangsan', 'normal people', 'lisi', 'wangermazi']
['zhangsan', 'lisi', 'wangermazi']

方法remove()只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要使用循环来确保将每个值都删除。

3.3 组织列表

3.3.1 使用方法sort()对列表永久排序

方法 sort() 永久性地修改列表元素的排列顺序。

1
2
3
4
5
names = ['zhangsan', 'normal people', 'lisi', 'wangermazi']
print(names)

names.sort()
print(names)

输出结果为:

1
2
['zhangsan', 'normal people', 'lisi', 'wangermazi']
['normal people', 'lisi', 'wangermazi', 'zhangsan']

还可以按语字母顺序相反的顺序排列列表元素,只需向sort()方法传递参数 reverse = True 即可。

1
2
3
4
5
names = ['zhangsan', 'normal people', 'lisi', 'wangermazi']
print(names)

names.sort(reverse = True)
print(names)

输出结果为:

1
2
['zhangsan', 'normal people', 'lisi', 'wangermazi']
['zhangsan', 'wangermazi', 'lisi', 'normal people']

3.3.2 使用函数sorted()对列表临时排序

要保留列表元素原来的排序顺序,同时以特定的顺序呈现它们,可使用函数 sorted()

1
2
3
4
5
6
names = ['zhangsan', 'normal people', 'lisi', 'wangermazi']
print(names)

print(sorted(names))

print(names)

输出结果为:

1
2
3
['zhangsan', 'normal people', 'lisi', 'wangermazi'] #排序前
['normal people', 'lisi', 'wangermazi', 'zhangsan'] #排序输出结果
['zhangsan', 'normal people', 'lisi', 'wangermazi'] #排序后,与排序前一致

如果要按与字母顺序相反的顺序显示列表,也可向函数sorted()传递参数 reverse = True。

3.3.3 倒着打印列表

要反转列表元素的排列顺序,可使用方法 reverse()

1
2
3
4
5
names = ['zhangsan', 'normal people', 'lisi', 'wangermazi']
print(names)

names.reveres()
print(names)

输出结果为:

1
2
['zhangsan', 'normal people', 'lisi', 'wangermazi']
['wangermazi', 'lisi', 'normal people', 'zhangsan']

3.3.4 确定列表的长度

使用函数 len() 可快速获悉列表的长度。

1
2
3
names = ['zhangsan', 'normal people', 'lisi', 'wangermazi']
names_length = len(names)
print(names_length)

输出结果为:

1
4