列表的相关用法-day6

列表的相关用法

一、列表切片

  1. 切片 — 获取部分元素

切片的结果是列表 — 原列表的一部分

'''
语法:
列表[开始下标:结束下标:步长]
说明:
开始下标   --    下标值(0开始的和  -1开始的都行);确定切片有效范围的起点,可以取到
:   -     固定写法
结束下标   --     下标值(0开始的和  -1开始的都行);确定切片有效范围的终点,取不到
步长      -   1)决定切片的方向(步长对应的方向必须和开始到结束的方向一致,否则切片结果为空)
            2)绝对获取元素的方向(一个的一个的取还是跳着取)

注:切片的有效范围是:[开始下标,结束下标)

'''
games = ['王者荣耀','和平精英','生化危机','原神','诛仙','穿越火线','部落冲突','红警','魂斗罗']
print(games[1:5:1])   #['和平精英', '生化危机', '原神', '诛仙']
print(games[1:-1:1])  #['和平精英', '生化危机', '原神', '诛仙', '穿越火线', '部落冲突', '红警']
print(games[3:-1:-1])  # []
print(games[-1:-5:1]) # []
print(games[0:-3:2])  # ['王者荣耀','生化危机','诛仙']
print(games[-1:2:-2]) # ['魂斗罗', '部落冲突', '诛仙']
print(games[2:-1:1])  # ['生化危机','原神','诛仙','穿越火线','部落冲突','红警']
  1. 省略步长
# 列表[开始下标:结束下标] == 列表[开始下标:结束下标:1]
# 省略步长,步长就是1
games = ['王者荣耀','和平精英','生化危机','原神','诛仙','穿越火线','部落冲突','红警','魂斗罗']
print(games[2:-2]) # ['生化危机','原神','诛仙','穿越火线','部落冲突']
  1. 省略开始下标
# 列表[:结束下标:步长] / [:结束下标]
# 省略开始下标,如果步长为正,从第一个元素开始往后取;如果步长为负则从最后一个元素开始往前取
print(games[:-3])  #['王者荣耀','和平精英','生化危机','原神','诛仙','穿越火线']
print(games[:3:-1]) #['魂斗罗', '红警', '部落冲突', '穿越火线', '诛仙']
  1. 省略结束下标
# 列表[开始下标::步长] / [开始下标:]   --- 省略结束下标和步长时 : 也要省略
# 省略结束下标:如果步长为正,从开始下标开始取到最后一个元素;如果步长为负,从开始下标开始取到最前面一个元素
games = ['王者荣耀','和平精英','生化危机','原神','诛仙','穿越火线','部落冲突','红警','魂斗罗']
print(games[1:])     #['和平精英','生化危机','原神','诛仙','穿越火线','部落冲突','红警','魂斗罗']
print(games[3::2])   #['原神','穿越火线','红警']
print(games[-2::-1]) #['红警', '部落冲突', '穿越火线', '诛仙', '原神', '生化危机', '和平精英', '王者荣耀']
  1. 开始结束下标一起省
# 列表[::步长] / 列表[:]
print(games[::-1])  #['魂斗罗', '红警', '部落冲突', '穿越火线', '诛仙', '原神', '生化危机', '和平精英', '王者荣耀']
print(games[::2])   #['王者荣耀', '生化危机', '诛仙', '部落冲突', '魂斗罗']
print(games[:])     #['王者荣耀','和平精英','生化危机','原神','诛仙','穿越火线','部落冲突','红警','魂斗罗']
print('abcdef'[1:]) #bcdef

二、删和改

  1. 删 - 删除列表元素(让列表元素个数减少)
teleplays = ['琅琊榜', '大秦', '回家的诱惑', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸', '西游记']

# 1) del 列表[下标]  -  删除列表中指定下标对应的元素
# 注:下标不能越界
del teleplays[2]
print(teleplays)  #['琅琊榜', '大秦', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸', '西游记']

# 删除之后原列表重新排序

del teleplays[-2]
print(teleplays)   #['琅琊榜', '大秦', '康熙王朝', '破产姐妹', '亮剑', '西游记']

# 2)列表.remove(元素)   -    删除列表中指定元素
# 注意:1.如果元素不存在,会报错
#      2.如果元素有多个,只删第一个
teleplays.remove('琅琊榜')
print(teleplays)   #['大秦', '康熙王朝', '破产姐妹', '亮剑', '西游记']

# teleplays.remove('白蛇🐍传')     #list.remove(x): x not in list
nums = [10,20,30,20,10,20]
nums.remove(20)
print(nums)           #[10, 30, 20, 10, 20]

# 3)
# 列表.pop()      --     取出列表最后一个元素
# 列表.pop(下标)   --     取出列表中指定下标对应的元素
teleplays = ['琅琊榜', '大秦', '回家的诱惑', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸', '西游记']
del_item = teleplays.pop()
print(teleplays)  #['琅琊榜', '大秦', '回家的诱惑', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸']
print(del_item)   # 西游记

del_item = teleplays.pop(1)
print(teleplays)   #['琅琊榜', '回家的诱惑', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸']
print(del_item)    # 大秦


# 4)列表.clear()   ---- 清空列表
teleplays = ['琅琊榜', '大秦', '回家的诱惑', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸', '西游记']
teleplays.clear()
print(teleplays)   #------------ 这个要好一些


# teleplays = ['琅琊榜', '大秦', '回家的诱惑', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸', '西游记']
# print(teleplays)
# teleplays = []
# print(teleplays)     #------------这个一般不用(不好)
  1. 改 - 修改元素的值
# 列表[下标] = 值    ----    将列表中指定下标对应的元素修改成指定的值
teleplays = ['琅琊榜', '大秦', '回家的诱惑', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸', '西游记']
print(teleplays)
teleplays[0] = '庆余年'
print(teleplays)   #['庆余年', '大秦', '回家的诱惑', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸', '西游记']

# 练习:将低于60分的成绩全部改成0分
# 方法一:
scores = [90, 45, 56, 89, 76, 56, 92, 45, 30, 59, 67, 70]
for x in range(len(scores)):
    if scores[x] < 60:
        scores[x] = 0
print(scores)

# 方法二
scores = [90, 45, 56, 89, 76, 56, 92, 45, 30, 59, 67, 70]
for index, item in enumerate(scores):
    if item < 60:
        scores[index] = 0
print(scores)

# 方法三:
scores = [90, 45, 56, 89, 76, 56, 92, 45, 30, 59, 67, 70]
new_scores = []
for item in scores:
    if item < 60:
        new_scores.append(0)
        continue
    new_scores.append(item)
print(new_scores)
# 练习2:删除列表中低于60分的成绩
scores = [90, 45, 56, 89, 76, 56, 92, 45, 30, 59, 67, 70]
for x in scores:
    if x < 60:
        scores.remove(x)
print(scores)

列表相关操作

  1. 数学运算符:+、*
# 列表1+列表2 --  将列表1和列表2合并成一个新列表
# 列表1 * N/ N * 列表1 ----- 将N个列表1合并产生一个新的列表
print([1,2,3] + [10,20,30])

list1 = [100,200]
list2 = [1000,2000]
print(list2+list1,list1)
print(list1 * 3)    #[100, 200, 100, 200, 100, 200]
  1. 比较运算符:==、 !=、 >、 <、 <=、 >=
# 1)== 、 !=
print([1,2,3] == [1,2,3])   #True
print([1,2,3] == [1,3,2])   #False
print({1,2,3} == {1,3,2})   #True,集合无序

# 2)列表1 >(<、>=、<=)列表2
# 两个列表比较大小的原理:比较元素第一对不相等 的大小(两个列表下标相同的元素为一对,这个下标是0开始的)
print([1,200,300,400,50] >[10,2])        # False
print([11,0,0,0] > [10,2])    # True
  1. in 和 not in
# 元素 in 列表   ----   判断列表中是否存在指定元素
# 元素 not in 列表   ----   判断列表中是否不存在指定元素
print(10 in [10,20,30])    # True
print([10,20] in [10,20,30])    # False
print([10,20] in [[10,20],30])  # True

score = 89
# 判断分数值石佛100分或者0分或者60
if score == 100 or score == 0 or score == 60:
    print('特殊值')

if score in [0,60,100]:
    print('特殊值')
v = 34
if type(v) == int or type(v) == float or type(v) == bool or type(v) == complex:
    print('数字')
else:
    print('不是数字')

if type(v) in [int,float,complex,bool]:
    print('数字')
else:
    print('不是数字')

四、相关函数和方法

  1. 列表相关方法:copy、count、index、reverse、sort
# 1)列表.count(元素)  -   统计列表中指定元素的个数
nums = [10,20,30,4,10,20,10,10]
print(nums.count(10))   #4
print(nums.count(4))   #1
print(nums.count(100)) #0

# 2.列表.index(元素)  ---  获取元素第一次出现在列表中的下标(下标是0开始的下标值)
print(nums.index(20))  #1
print(nums.index(4))  #3
print(nums.index(10)) #0
# print(nums.index(200))     ---- 报错(ValueError: 200 is not in list)

# 3)列表.reverse()  --- 倒序
nums = [10,20,5,2]
nums.reverse()
print(nums)   #[2, 5, 20, 10]

# 4)
# 列表.sort()  -   将列表中的元素从小到大排序
# 列表.sort(reverse=True)   --     将列表中的元素从大到小排序
nums = [10,20,5,2,100]
nums.sort()
print(nums)     #[2, 5, 10, 20, 100]

nums = [10,20,5,2,100]
nums.sort(reverse=True)
print(nums)   #[100, 20, 10, 5, 2]


# 5)列表.copy()    ---   复制列表产生一个元素一模一样的新列表(和原列表地址不一样)
list1 = [1,2,3]
print(list1)
list2 = list1
print(list2)  #[1, 2, 3]
list3 = list1.copy()
print(list3)   #[1, 2, 3]

list1.append(100)
print(list1)    #[1, 2, 3, 100]
print(list2)    #[1, 2, 3, 100]
print(list3)    #[1, 2, 3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值