列表
一,什么是列表
1.列表是容器类数据类型,用一个变量可以保存多个数据。用[]为列表容器的标志,里面的多个数据用逗号隔开:
# 例如list1 = [1,2,3,4]
# list1 为一个变量,[]内的数据为变量保存的值
2.特点:
1)列表是可变的(指的是列表中元素的个数,元素的值和元素的位置是可以发生改变的)
2)列表是有序的 (每个元素对应的索引值,在列表中,列表的下标是元素序列中的位置信息)
在列表中每个元素都有两个下标值,一个是从0开始依次增加的下标值(0表示第一个元素)
一个是从-1开始依次减少的下标值(-1表示倒数第一个元素,-2表示倒数第二个元素…)
注意:下标不能越界,下标的有效范围0 ~ n-1 和 -1 ~ -n(n表示元素的个数)
二,列表的基本操作
1.查:获取列表元素
1)查单个- 获取一个元素
num1 = [10, 20, 30, 40]
print(num1[0])
#num1[0] -> 值为10 表达式是获取的列表的中下标为0的值
2)遍历 - 一个一个的获取,直至获取所有元素
a.直接获取元素
num1 = [10, 20, 30, 40]
for i in num1:
print(i) #打印i的值为10 20 30 40 通过循环一一获取列表元素的值
b.通过下标遍历获取元素的值
num1 = [10, 20, 30, 40]
for i in range(len(num1)):
print(i) #打印i的值为0 1 2 3 通过循环一一获取列表元素的下标,每个小标对应元素的值
c.同时获取下标和元素的值
num1 = [10, 20, 30, 40]
for x,y in enumerate(num1):
print(x,y) #打印x的值为列表下标 0 1 2 3
#打印y的值为列表元素 10 20 30 40
2.增 - 在列表中增加元素
1)列表.append(元素) - 在指定的列表的最后添加指定的值
num1 = [10, 20, 30, 40]
num1.append(50) #在列表的最后添加指定元素
print(num1) #->num1[10,20,30,40.50]
2)列表.insert(下标,元素) - 指定下标对应的元素前插入指定元素
num1 = [10, 20, 30, 40]
num1.insert(0,10) #在列表下标为0前插入值为10的元素
print(num1) #-> num1[10,10,20,30,40]
3.删 - 删除列表中指定的元素
1).del 列表[下标] - 删除列表中指定下标的元素
num1 = [10, 20, 30, 40]
del num1[3] #删除列表中下标为3的值
print(num1) #-> num1[10,20,30]
2)列表.remove(元素) - 删除列表中指定的元素(如果元素不存在会报错,如果元素有多个,找到第一个并删除)
num1 = [10, 20, 30, 40,30]
num1.remove(30) #删除列表中第一个30的元素
print(num1) #-> num1[10,20,40,30]
3)a.列表.pop() - 取出列表中最后一个,并且返回
num1 = [10, 20, 30, 40]
num2 = num1.pop() #取出num1中最后一个元素,返回一个新列表num2
print(num2) #-> num2[10,20,30]
b. 列表.pop(下标) - 取出列表中指定下标元素并返回
num1 = [10, 20, 30, 40]
num2 = num1.pop(2) #取出num1中下标为2的元素的值,返回一个新列表num2
print(num2) #->num2[10,20,40]
4.改 - 修改列表中指定元素的值
num1 = [10, 20, 30, 40]
num1[2] = 80 #修改下标为2的元素值
print(num1) #->num1[10,20,80,40]
5.切片 - 获取列表中部分元素
1.完整语法:
列表[开始下标:结束下标:步长]
num1 = [10, 20, 30, 40]
print(num1[1:3:1]) #->打印结果为[20,30] 注意:结束下标的值取不到,只能取结束下标前一个的值
print(num1[-1:0:-1]) #->打印结果为[40,30,20] 注意:步长是负数切片方向从后向前切
print(num1[-1:0:-2]) # ->打印结果为[40,20] 注意:步长是负数且绝对值为2,切片从后向前隔一个切一个
获取原理:
1)如果步长对应的方向和开始下标对应的元素到结束下标对应的元素的方向不一致,切片无效,结果是空列表
2)如果切片有效,先确定有效范围([开始下标:结束下标:步长],然后在有效范围内根据步长的方向按照步长的绝对值获取元素,创建新列表
2.省略语法
列表[开始下标:结束下标:步长]
1)省略步长:列表[开始下标:结束下标] - 省略步长,步长默认值是1
num1 = [10, 20, 30, 40]
print(num1[1:-1]) #->打印结果为[20,30] 省略的步长默认值是1
2)省略开始下标:列表[:结束下标:步长] - 如果步长为正数就从第一元素开始往后取,如果步长为负数就从最后一个元素开始往前取
num1 = [10, 20, 30, 40]
print(num1[:-1:1]) #->打印结果为num1[10,20,30] 步长为正数,从前往后取,开始下标默认为0开始
print(num1[:0:-1]) #->打印结果为num1[40,30,20] 步长为负数,从后往前取,开始下标默认为-1开始
3)省略结束下标:列表[开始下标::步长] - 如果步长为正数取到最后一个元素为止;如果步长为负数取到第一个元素为止。
num1 = [10, 20, 30, 40]
print(num1[0::1])#->打印结果为[10,20,30,40]步长为正数,从前往后取,结束下标取值可以越界取值
print(num1[-1::-1])#->打印结果为[40.30.20.10]步长为负数,从后往前取,结束下标取值可以越界取值
注意:省略结束下标,在切片时可以越界取值