一、数据类型-列表
1、列表是由python提供的一种容器型数据类型;以[]作为容器的标志,里面多个元素用逗号隔开。
[元素1,元素2,元素3]
列表是可变的(元素的个数,元素的值,元素的顺序可变)、-说明元素支持增删改
有序的-说明支持下标操作
列表元素:
列表中的元素可以是任何类型的数据;同一个列表中的元素的类型可以不一样,如下:
list = [12,12.8,True,"abc",[1,2],(10,100),{1,2},{"name":100}]
list1 = [1, 2, 3, 4, 50]
print(list1)
输出结果为:
[1, 2, 3, 4, 50]
2、查询获取列表中的元素
a、查询单个元素:
语法:列表[]下标 获取列表中指定下标对应的元素
说明:列表 - 列表值,保存列表的变量,结果是列表的表达式
[] - 固定写法
下标 - 列表中的每个元素都会对应一个下标,表示这个元素在列表中的位置
下标范围是:
1、0~长度减一(列表长度) 从前往后一次增加
2、-1~ -列表长度 -1表示最后一个 -1表示倒数第二个(从后往前一次递减)
下标不能越界,否则会报错
print([1, 2, 3, 4][-1]) # 输出结果为:4
b、获取部分元素(切片)
1、获取部分元素
列表[开始下标:结束下标:步长]-从开始下标开始获取 下标值每次增加步长去获取下一个元素 到结束下标前为止。
列表[M:N:step] 获取range(m,n,step)产生的数字序列下标对应的所有元素
注意:列表切片的结果还是列表,新列表中的元素是原列表元素的一部分
说明:步长为正说明从前往后取,那么开始下标所在位置必须在结束下标所在位置的前面,否则结果是空,取不到元素。
如果步长为负,是从后往前取,那么开始下标所在的位置必须在结束下标所在的位置的后面,否则取不到元素。
切片的时候 下标可以越界
list2 = ['路飞', '娜美', '山治', '索罗', '乌索普', '乔巴']
print(list2) # ['路飞', '娜美', '山治', '索罗', '乌索普', '乔巴']
print(list2[1:4:1]) # ['娜美', '山治', '索罗']
print(list2[5:0:-1]) # ['乔巴', '乌索普', '索罗', '山治', '娜美']
print(list2[0:5:2]) # ['路飞', '山治', '乌索普']
print(list2[5:2:1]) # 空
print(list2[-1:3:1]) # 空
2、切片
省略下标和步长
a 、 列表 [开始下标:结束下标] - 相当于步长是1
b 、 列表[:结束下标:步长] / 列表[:结束下标]
省略开始下标:步长为正从第一个开始取,步长为负表示从最后一个往前取
c 、 列表[开始下标::步长] / 列表[开始下标:]
省略结束下标:取到最后一个 从该方向取到最后一个元素为止
d 、 列表[::步长] / 列表 [:]
ls = [1, 2, 3, 4, 5, 6, 7]
print(ls[1:3])
print(ls[:5:1])
print(ls[:6])
print(ls[:])
print(ls[0::1])
print(ls[3:])
#依次对应结果:
# [2, 3]
# [1, 2, 3, 4, 5]
# [1, 2, 3, 4, 5, 6]
# [1, 2, 3, 4, 5, 6, 7]
# [1, 2, 3, 4, 5, 6, 7]
# [4, 5, 6, 7]
遍历列表:
将列表中的元素一个个的取出来
a.直接遍历获取元素
for 变量 in 列表:
b.用遍历下标来遍历
len(列表)
for 变量 in range(len()):
print(列表[变量])
二、元素的增、删、改
1、元素的增-------增加元素
1、列表.append(元素) -在指定的列表的末尾添加指定的元素
2、列表.insert(位置,数据) - 在列表中指定的下标前添加指定的元素
films = ['一人之下', '一拳超人', '不良人', '死亡笔记']
films.append('秦时明月')
print(films) # ['一人之下', '一拳超人', '不良人', '死亡笔记', '秦时明月']
films.insert(1, '柯南')
print(films) # ['一人之下', '柯南', '一拳超人', '不良人', '死亡笔记', '秦时明月']
2、元素的删------删除元素
1、 del 列表[下标] - 删除指定下标对应的元素
films = ['一人之下', '一拳超人', '不良人', '死亡笔记']
del films[2] # 下标不能越界,越界报错
print(films) # ['一人之下', '一拳超人','死亡笔记']
2、列表.remove(元素) - 删除列表中指定的元素
注意::如果元素在列表中不存在则会报错!
如果要删除的元素在列表里面有多个,只删第一个元素。
nums = [10, 2, 45, 2, 9]
nums.remove(2)
print(nums) # [10, 45, 2, 9]
3、元素的改 - 修改元素
列表[下标] =值 - 将列表中指定下标对应的元素修改成指定的值
将score中所有小于60的值的分数换成不及格:
scores = [89, 45, 56, 20, 90, 78, 60, 23, 87, 20, 50]
length = len(scores)
for i in range(length):
if scores[i] < 60:
scores[i] = '不及格'
print(scores) #[89, '不及格', '不及格', '不及格', 90, 78, 60, '不及格', 87, '不及格', '不及格']
作业:
1.已知一个数字列表,求列表中心元素。
lis = [10,21,30,20,51,54,50,20,10]
Id = int(len(lis)/2)
if len(lis) % 2 ==0:
print("最中间的数是:",lis[Id-1],lis[Id])
else:
print("最中间的数是:",lis[int(len(lis)/2)])
# 最中间的数是: 51
2.已知一个数字列表,求所有元素和。
lis = [10,21,30,20,51,54,50,20,10]
Sum = 0
for i in lis:
Sum+=i
print(Sum) # 266
3.已知一个数字列表,输出所有奇数下标元素。
lis = [10,21,30,20,51,54,50,20,10]
for i in range(len(lis)):
if i & 1 == 1:
print(lis[i])
4.已知一个数字列表,输出所有元素中,值为奇数的元素。
lis = [10,21,30,20,51,54,50,20,10]
for i in range(len(lis)):
if lis[i] & 1 == 1:
print(lis[i])
5.已知一个数字列表,将所有元素乘二。
lis = [10,21,30,20,51,54,50,20,10]
for i in range(len(lis)):
lis[i]=lis[i]*2
print(lis)
6.有一个长度是10的列表,数组内有10个人名,要求去掉重复的
例如:names = ['张三', '李四', '大黄', '张三'] -> names = ['张三', '李四', '大黄']
names = ['张三', '李四', '大黄', '张三','王五','李四','啊猫','啊狗','老大','老二']
names_new = []
for values in names:
if values not in names_new:
names_new.append(values)
names = names_new
print(names)
7.已经一个数字列表(数字大小在0~6535之间), 将列表转换成数字对应的字符列表
list1 = [97, 98, 99,95,9,5,8,4,2,6,4,8]
for i in range(len(list1)):
list1[i]=chr(list1[i])
print(list1)
8.用一个列表来保存一个节目的所有分数,求平均分数(去掉一个最高分,去掉一个最低分,求最后得分)
scores = [90,50,20,80,60,70,89,48,56,90]
scores.remove(max(scores))
scores.remove(min(scores))
print(scores)
Sum = 0
for i in range(len(scores)):
Sum+=scores[i]
average = Sum / len(scores)
print(average)
9..有两个列表A和B,使用列表C来获取两个列表中公共的元素
A = [1, 'a', 4, 90,100,'i','m']
B = ['a', 8, 'j', 1,4,8,'i']
c = []
for value in A:
if value in B:
c.append(value)
print(c)
10.有一个数字列表,获取这个列表中的最大值.(注意: 不能使用max函数)
num = [98,56,2,64,64,6,4,9941,61,6,6,4]
Temp = [0]
for v in num:
if v > Temp[0]:
Temp[0]=v
print(Temp)