上一章Python教程请查看:python3数字,类型转换和数学
在本文中,我们将学习有关Python列表的所有内容;
如何创建它们、对列表进行切片、添加或删除元素等等。
Python提供了一系列复合数据类型,通常称为序列,List是Python中使用最频繁、用途最广的数据类型之一。
如何创建一个列表?在Python编程中,通过将所有项(元素)放在方括号[]中,用逗号分隔,从而创建列表。
它可以有任意数量的项目,它们可能是不同的类型(整数、浮点数、字符串等)。
# 空列表
my_list = []
# 整数列表
my_list = [1, 2, 3]
# 使用混合数据类型的列表
my_list = [1, "Hello", 3.4]
此外,一个列表甚至可以有另一个列表作为项,这称为嵌套列表。
# 嵌套列表
my_list = ["mouse", [8, 4, 6], ['a']]
如何从列表中访问元素?我们可以通过多种方式访问列表中的元素。
列表索引
我们可以使用索引操作符[]来访问列表中的一个项,index从0开始,一个有5个元素的列表的索引范围是0到4。
试图访问一个元素,否则将引发一个IndexError,索引必须是整数,我们不能使用浮点数或其他类型,这将导致类型错误。
使用嵌套索引访问嵌套列表。
my_list = ['p','r','o','b','e']
# 输出: p
print(my_list[0])
# 输出: o
print(my_list[2])
# 输出: e
print(my_list[4])
# Error! Only integer can be used for indexing
# my_list[4.0]
# 嵌套列表
n_list = ["Happy", [2,0,1,5]]
# 嵌套索引
# 输出: a
print(n_list[0][1])
# 输出: 5
print(n_list[1][3])
负索引(negative indexing)
Python允许对它的序列进行负索引,下标-1表示最后一项,下标-2表示倒数第二项,依此类推。
my_list = ['p','r','o','b','e']
# 输出: e
print(my_list[-1])
# 输出: p
print(my_list[-5])
文章图片
如何在Python中切片列表?我们可以使用切片操作符(冒号)来访问列表中的项目范围。
my_list = ['a','b','c','d','e','f','g','h','i']
# 第三个到第五个元素
print(my_list[2:5])
# 元素从第4个开始
print(my_list[:-5])
# 第6个到结束
print(my_list[5:])
# 从尾部开始
print(my_list[:])
通过将索引考虑到如下所示的元素之间,切片可以得到最佳的可视化效果,如果我们想要访问一个范围,我们需要两个下标来从列表中分割那部分。
文章图片
如何更改或添加元素到列表?List是可变的,这意味着它们的元素可以不像string或tuple那样更改。
我们可以使用赋值运算符(=)来更改项或项的范围。
odd = [2, 4, 6, 8]
# 修改元素
odd[0] = 1
# 输出: [1, 4, 6, 8]
print(odd)
# 更改第2个到第4个元素
odd[1:4] = [3, 5, 7]
# 输出: [1, 3, 5, 7]
print(odd)
我们可以使用append()方法向列表添加一个项,或者使用extend()方法添加几个项。
odd = [1, 3, 5]
odd.append(7)
# 输出: [1, 3, 5, 7]
print(odd)
odd.extend([9, 11, 13])
# 输出: [1, 3, 5, 7, 9, 11, 13]
print(odd)
我们还可以使用+运算符来组合两个列表,这也称为连接。
操作符*在给定的次数内重复一个列表。
odd = [1, 3, 5]
# 输出: [1, 3, 5, 9, 7, 5]
print(odd + [9, 7, 5])
#输出: ["re", "re", "re"]
print(["re"] * 3)
此外,我们可以使用insert()方法在需要的位置插入一个项,或者通过将多个项压缩到列表的一个空切片中来插入多个项。
odd = [1, 9]
odd.insert(1,3)
# 输出: [1, 3, 9]
print(odd)
odd[2:2] = [5, 7]
# 输出: [1, 3, 5, 7, 9]
print(odd)
如何从列表中删除元素?我们可以使用关键字del从列表中删除一个或多个项,它甚至可以完全删除列表。
my_list = ['p','r','o','b','l','e','m']
# 删除一个元素
del my_list[2]
# 输出: ['p', 'r', 'b', 'l', 'e', 'm']
print(my_list)
# 删除多个元素
del my_list[1:5]
# 输出: ['p', 'm']
print(my_list)
# 删除整个列表
del my_list
# Error: List not defined
print(my_list)
我们可以使用remove()方法来删除给定的项,或者使用pop()方法来删除给定索引处的项。
如果没有提供索引,则pop()方法删除并返回最后一项,这有助于我们将列表实现为堆栈(先入后出数据结构)。
我们还可以使用clear()方法来清空一个列表。
my_list = ['p','r','o','b','l','e','m']
my_list.remove('p')
# 输出: ['r', 'o', 'b', 'l', 'e', 'm']
print(my_list)
# 输出: 'o'
print(my_list.pop(1))
# 输出: ['r', 'b', 'l', 'e', 'm']
print(my_list)
# 输出: 'm'
print(my_list.pop())
# 输出: ['r', 'b', 'l', 'e']
print(my_list)
my_list.clear()
# 输出: []
print(my_list)
最后,我们还可以通过将一个空列表分配给一个元素片来删除列表中的项。
>>> my_list = ['p','r','o','b','l','e','m']
>>> my_list[2:3] = []
>>> my_list
['p', 'r', 'b', 'l', 'e', 'm']
>>> my_list[2:5] = []
>>> my_list
['p', 'r', 'm']
Python列表方法Python编程中list对象中可用的方法如下表所示。
它们被作为list.method()访问,上面已经使用了一些方法。
Python列表方法 |
append() – 在列表的末尾添加一个元素 |
extend() – 将列表中的所有元素添加到另一个列表中 |
insert() – 在定义的索引处插入一个项 |
remove() – 从列表中删除一个项 |
pop() – 删除并返回给定索引处的元素 |
clear() – 从列表中删除所有项 |
index() – 返回第一个匹配项的索引 |
count() – 返回作为参数传递的项数的计数 |
sort() – 按升序对列表中的项进行排序 |
reverse() – 反转列表中项目的顺序 |
copy() – 返回列表的浅拷贝 |
my_list = [3, 8, 1, 6, 0, 8, 4]
# 输出: 1
print(my_list.index(8))
# 输出: 2
print(my_list.count(8))
my_list.sort()
# 输出: [0, 1, 3, 4, 6, 8, 8]
print(my_list)
my_list.reverse()
# 输出: [8, 8, 6, 4, 3, 1, 0]
print(my_list)
列表推导:创建新列表的优雅方式列表推导是在Python中从现有列表创建新列表的一种优雅而简洁的方法。
列表推导由一个表达式和一个方括号内的for语句组成。
下面是一个列表示例,其中每个项的幂都是2。
pow2 = [2 ** x for x in range(10)]
# 输出: [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
print(pow2)
【python3列表list – Python3教程】这个代码相当于
pow2 = []
for x in range(10):
pow2.append(2 ** x)
列表推导可以包含更多的for或if语句,可选的if语句可以过滤新列表中的项。这里有一些例子。
>>> pow2 = [2 ** x for x in range(10) if x > 5]
>>> pow2
[64, 128, 256, 512]
>>> odd = [x for x in range(20) if x % 2 == 1]
>>> odd
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
>>> [x+y for x in ['Python ','C '] for y in ['Language','Programming']]
['Python Language', 'Python Programming', 'C Language', 'C Programming']
Python中的其他列表操作列表成员测试
我们可以使用关键字in来测试一个项目是否存在于一个列表中。
my_list = ['p','r','o','b','l','e','m']
# 输出: True
print('p' in my_list)
# 输出: False
print('a' in my_list)
# 输出: True
print('c' not in my_list)
遍历列表
使用for循环,我们可以遍历列表中的每一项。
for fruit in ['apple','banana','mango']:
print("I like",fruit)
推荐阅读
- python3元组tuple – Python3教程
- python3数字,类型转换和数学 – Python3教程
- python3包(package)和模块(module) – Python3教程
- python3模块 – Python3教程
- python3全局关键字global – Python3教程
- python3全局变量、局部变量和非局部变量 – Python3教程
- python3匿名函数和Lambda函数 – Python3教程
- python3 递归(递归函数) – Python3教程
- python3 函数参数 – Python3教程