列表(list)是Python中最常用的内置类型之一,是处理一组有序项目的数据结构,或者说,是一个有序对象的集合。通俗地理解,列表即序列,它是一系列数据的序列。在前文介绍的字符串中,字符串包含的值是一个个字符。而在列表中,值可以是任意类型。列表的值一般也称为列表的元素,通过英文逗号分隔,并包含在方括号内。
一、列表的特点:
1.列表是一种无序的、可重复的数据序列,可以随时添加、删除其中的元素。
2.列表的每个元素都分配一个数字索引,和字符串一样,索引从0开始。
3.列表使用方括号创建,使用英文逗号分隔元素。
4.列表元素值可以是任意类型,包括变量(需预先定义赋值)。
5.使用方括号对列表进行元素访问、切片、修改、删除等操作,开闭合区间为[)形式(取左不取右)。
6.列表的元素可以是列表(列表的嵌套)。
二、创建列表
import math
name = [] # 创建一个空列表
age = list() # 创建一个空列表
info = [3204, 'Jack', True, 3.14, math.pi] # 创建有5个元素组成的列表
三、访问元素
如果要提取列表中的元素,使用索引是一种方法,将索引值写在变量名后的方括号内,Python的索引是从0开始的。
print(info[1])
# Jack
print(info[5])
# IndexError: list index out of range
列表的元素可以是任意类型,因此列表可以嵌套列表。
names = ['zhangsan', 'lisi', ['wangwu', 'zhaoliu'], 'liuqi']
print(names[2]) # 取索引为2的元素值,值仍为列表
# ['wangwu', 'zhaoliu']
print(names[2][1]) # 再取子列表中索引为1的元素值
# zhaoliu
其它数据类型转列表,比如字符串转列表,元组转列表等等。
s = 'PYTHON'
list1 = list(s)
print(list1)
# ['P', 'Y', 'T', 'H', 'O', 'N']
四、列表的增删改查
1.增
Python中有3种方法可以为列表添加元素,分别是append()、insert()和extend()。
- append(element):将元素element添加到列表的末尾。
nums=[1,2,3,4,5]
nums.append(6)
print(nums) #[1,2,3,4,5,6]
- insert(position, element):将元素element插入列表指定position位置。
nums=[1,2,3,4,5]
nums.insert(2,9)
print(nums) #[1,2,9,3,4,5]
- extend(list):使用另一个列表作参数,然后把所有的元素添加到一个列表上。
nums=[1,2,3,4,5]
nums.entend([8,9])
print(nums) #[1,2,3,4,5,8,9]
2.删
Python中有3种方法可以为列表删除元素,分别是pop([index]),remove(element)和del命令。
- pop([index]):移除索引位置index的元素并返回它的值,如果没有参数,则默认删除和返回最后一个。
nums=[1,2,3,4,5]
num=nums.pop() # num:5 nums:[1,2,3,4]
nums.pop(1) # nums:[1,3,4]
nums.pop(6) #索引不存在,报错
- remove(element):移除参数中指定的元素element,如果存在多个同样的值,则移除最左边的。不同于pop(),这个方法不返回任何值。
nums=[1,2,3,4,5]
nums.remove(3)
print[nums] #[1,2,4,5]
nums.remove(6) #值不存在,报错
- 另一种方式是使用del命令,del list[0]类似于list.pop(0),但前者不会返回被删除的元素。
nums=[1,2,3,4,5]
del nums[1] #等价于 nums.pop(1)
- 除了上面提到的3种方法,另有clear()方法可以清洗列表,它会清空列表中的所有元素。
nums.clear() # []
3.改
列表是可以修改的,只需对指定的列表元素重新赋值即可。
nums=[1,3,5,6,9]
nums[3]=7
print(nums) #[1,3,5,7,9]
除了使用自然数进行索引元素,还可以使用负整数进行反向索引,比如nums[-1]也对应着9。
4.查
列表可以通过 index(element)进行查询,返回元素的索引位置,如果元素不存在,报错。
names=['zhangsan','lisi','wangwu','zhaoliu']
n=nums.index('wangwu') #返回元素的索引位置 n:2
n1=nums.index('huanger') #报错,元素不存在
五、列表的遍历
1.使用while循环
为了更有效的输出列表的每个数据,可以使用循环来完成。
names=['Jack','Rose','Alx']
length=len(names) #len() 获取列表长度
i=0
while i<length:
print(names[i])
i+=1
运行结果:
Jack
Rose
Alx
2.使用for循环
while循环是一种基本的遍历列表数据的方式,但是最常用也是最简单的方式是使用for循环。
names=['Jack','Rose','Alx']
for name in names:
print(name)
运行结果:
names=['Jack','Rose','Alx']
for name in names:
print(name)
六、列表推导式
列表推导式作用是用简单的语法创建一个列表。
nums=[i for i in range(10)]
print(nums) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
nums1=[i for i in range(10) if i%2] # i%2 除2取余为1
print(nums1) #[1, 3, 5, 7, 9]
points=[(x,y) for x in range(3,5) for y in range(4,7)]
print(points) #[(3, 4), (3, 5), (3, 6), (4, 4), (4, 5), (4, 6)]