Day6:列表

1.列表

1)容器型数据类型(序列)

变量从是否是容器分为:非容器型数据类型的变量和容器型数据类型的变量

非容器型数据类型的变量 - 一个盒子里面只有一个格子,所以同一时间只能保存一个数据。例如:int、float、bool、None

容器型数据类型的变量 - 一个盒子里面有多个格子,每个格子可以存储不一样的数据,所以同一时间就可以保存多个数据,例如:list、dict、tuple、set、str等

scores = [89,70,98,23,90,67,62,78,23,89]
print(sum(scores))                         # 689
print(max(scores),min(scores))             # 98 23

2)什么是列表(list)

列表是容器型数据类型,将[]作为容器标志,里面多个元素用逗号隔开:[元素1,元素2,元素3,…]

列表是可变的(可变指的是元素的个数、值和顺序可变 - 支持增删改);列表有序(支持下标操作)

列表中元素:任何类型的数据都可以作为列表的元素。(没有要求)

元素 - 指的是容器中每一个独立的数据
#空列表

list1 = []
print(list1)         #[]

#list2是一个列表,列表中只有一个元素

list2 = [88]
print(list2)        #[88]

#同一个列表中的元素可以是不同类型数据

list4=[10,12.8,True,'abc',[100,200]]
print(list4)       #[10, 12.8, True, 'abc', [100, 200]]

2.获取列表元素

1)获取单个元素

语法:
列表[下标] - 获取指定下标对应的元素
说明:
列表 - 任何结果是列表的表达式,例如:保存列表的变量或者具体的列表数据
[] - 固定写法
下标 - 下标(又叫索引)是有序序列中元素的位置信息。python中有序序列中元素的下标有两种:
第一种:从前往后从0开始依次增加
第二种:从后往前从-1开始依次减少
注意:下标不能越界

list1 = [10,20,30,40]
print(list1[0])      # 获取list1中下标是0的元素  -> 10
print(list1[8])      # 报错:IndexError: list index out of range

2)切片 - 获取部分元素

语法1:完整的语法
列表[开始下标:结束下标:步长]
1)确定是否可以获取到数据:从开始下标到结束下标的方向如果和步长对应的方向(步长为正表示从前往后,步长为负表示从后往前)一定可以获取到数据,否则结果就是空列表
2)确定有效范围:开始下标对应的元素可以取到,结束下标对应的元素取不到 -> [开始下标,结束下标)
3)确定切片结果:在有效范围内按照步长绝对值取数据;绝对值为1就一个一个的取,绝对值为2就跳一个取一个

语法2:省略步长
列表[开始下标:结束下标] - 步长为1

语法3:省略开始下标
列表[:结束下标:步长] / 列表[:结束下标]
如果步长为正,从第一个元素开始往后取;如果步长为负,从最后一个元素开始往前取

语法4:省略结束下标
列表[开始下标::步长] / 列表[开始下标:]
如果步长为正,从开始下标开始从前往后取,取完为止;如果步长为负,从开始下标开始从后往前取,取完为止

#开始下标到结束下标的方向如果和步长对应的方向一致,就可以取到数据
#开始下标到结束下标的方向如果和步长对应的方向不一致,一定取不到数据

练习:写切片获取指定内容

heroes = ['李白', '李信', '张飞', '关羽', '刘备', '安琪拉', '瑶', '孙膑']
print(heroes[2:5:1])# ['张飞', '关羽', '刘备']
print(heroes[0:4:1])# ['李白', '李信', '张飞', '关羽']
print(heroes[-2:-5:-1])# ['瑶', '安琪拉', '刘备']
print(heroes[1:6:2])# ['李信',  '关羽',  '安琪拉']
print(heroes[-1:-4:-2])# ['孙膑', '安琪拉']
print((heroes[1::5]))# ['李信', '瑶']

3)遍历 - 一个一个的全部取出来

方法一 - 直接获取元素

for 变量 in 列表:
    循环体

变量依次获取的就是列表中的每个元素

方法二 - 通过获取每个元素的下标来获取元素

for 变量 in range(列表长度):
    循环体

变量依次获取的是列表中元素的下标
补充:len(列表) - 获取列表的长度
练习:scores保存所有学生的分数
1)统计不及格学生人数
2)计算学生平均分

scores = [90, 78, 54, 67, 88, 30, 59]
count = 0
for x in scores:
    if x<60:
        count+=1
print('不及格人数:',count)				# 不及格人数: 3

total=0
for y in scores:
    total+=y
print('平均分:',total/len(scores))      #平均分: 66.57142857142857

3.增删改

1)增 - 添加元素

1)列表.append(元素) - 将元素添加到列表的最后
2)列表.insert(下标,元素) - 将元素插入到指定下标前

#append示例

list1 = [10,20]
list1.append(100)
print(list1)				#[10, 20, 100]

#insert示例

nums = [10,20,30,40]
print(nums)							#[10, 20, 30, 40]
nums.insert(1,100)
print(nums)                        #[10, 100, 20, 30, 40]

2)删 - 删除元素

1)del 列表[下标] - 删除指定下标对应的元素
2)列表.remove(元素) - 删除指定元素
如果元素不存在会报错;如果元素有多个,只删最前面那一个
3)列表.pop() - 取出最后一个元素,并且返回
列表.pop(下标) - 取出指定下标对应的元素,并且返回

3)改

#列表[下标] = 值 - 将列表中指定下标对应的元素改成指定的值
练习:将列表中60分以下的改为0分

scores=[90,34,89,55,88]
for x in scores:
    for index in range(len(scores)):
        if scores[index]<60:
            scores[index] = 0
print(scores)            #[90, 0, 89, 0, 88]

4.in操作

#元素 in 列表 - 判断列表中是否存在指定的元素
#元素 not in 列表 - 判断列表中是否不存在指定的元素

print(10 in [10,20,30])         #True
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值