day05-列表和元组

列表和元组

列表删除中的坑

坑一

遍历过程中,执行删除操作,可能导致删除不完全,下标在增加,但删除元素导致列表长度减小,某些元素跳过未删除
解决:创建一个和原列表相同的新列表,遍历新列表,删除原列表

scores = [98, 45, 34, 89, 23, 67, 23, 9, 54, 100, 78]
# scores1 = scores.copy()   # scores1 = scores[:]; scores1 = scores *1; scores1 = scores + []
for i in scores[:]:
    if i < 60:
        scores.remove(i)

print(scores)

坑二 用len()获取下标去删会报错越界


scores = [98, 45, 34, 89, 23, 67, 23, 9, 54, 100, 78]
index = 0
while index < len(scores):
    s = scores[index]
    if s < 60:
        scores.pop(index)
    else:
        index += 1

print(scores)

列表的切片

列表切片 - 获取列表中的部分元素(一次性获取多个元素)

1.基本语法

语法: 
列表[开始下标:结束下标:步长]    -   前闭后开,每次下标值增加步长

注意:
1) 列表切片的结果一定是列表
2) 结束下标对应的元素一定取不到
3) 
a.如果步长为正,表示从前往后取,这个时候开始下标对应的元素必须在结束下标对应的元素前面,否则返回[]
b.如果步长为负,表示从后往前取,这个时候开始下标对应的元素必须在结束下标对应的元素后面,否则返回[]
list1 = [23, 45, 67, 89, 45, 68, 33]
print(list1[1:4:1])     # [45, 67, 89]
print(list1[0:6:2])     # [23, 67, 45]
print(list1[3:3:1])     # []
print(list1[1:4:1])     # []
print(list1[1:-1:-1])   # []
print(list1[-2:1:-2])   # [68, 89]

2.切片省略

  1. 省略步长
    列表[开始下标:结束下标] - 省略步长,步长就是1: 列表:[开始下标:结束下标:1]
  2. 省略开始下标
    列表[:结束下标:步长]
    步长为正:从第一个元素开始往后取(相当于开始下标为0)
    步长为负:从最后一个元素开始往前取(相当于开始下标为-1)
  3. 省略结束下标
    列表[开始下标::步长] - 省略结束下标
    步长为正:从开始下标开始往后取,取到最后一个元素为止
    步长为负:从开始下标开始往前取,取到第一个元素为止
fruits = ['苹果', '香蕉', '猕猴桃', '橘子', '石榴', '葡萄']
print(fruits[:4])       # ['苹果', '香蕉', '猕猴桃', '橘子']
print(fruits[:3:-2])    # ['葡萄']
print(fruits[0::])      # ['苹果', '香蕉', '猕猴桃', '橘子', '石榴', '葡萄']
print('python'[::-1])   # 'nohtyp'

列表的相关操作

1.加法运算和乘法运算

1) 加法:列表1+列表2 - 合并两个列表产生一个新的列表

list1 = [10, 20, 30]
list2 = [100, '数学']
list3 = list1 + list2
print(list3)

注意:列表只能和列表相加

print(list1 + 100)    # TypeError: can only concatenate list (not "int") to list

2)乘法: 列表*N /N *列表 - 将列表中的元素重复N次产生一个新的列表

2.比较运算

两个列表之间支持比较大小和相等

1) 两个列表比较大小

比较第一对不相等的元素的大小,谁大对应的列表就大
两个列表的元素类型不同不能相互比较大小

2) 比较相等

元素顺序的列表不相等

3. in 和 not in

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

A = [1, 2, 5, 10, 3, 2]
B = [5, 2, 10, 20, 32, 2]
C = []
for i in A:
    if i in B:
        if i not in C:
            C.append(i)
print(C)

4.相关函数

sum、max、min、sorted、len、list

  1. sum(数字列表) - 求列表中所有元素的和

  2. max(列表)/min(列表) - 求列表中元素的最大/最小值(注意:列表中元素的类型必须一致,并且元素本身支持比较运算)

sorted(列表) - 将列表中的元素从小到大排序(升序排序),产生一个新的列表(不会修改原列表)
sorted(列表, reverse=True) - 将列表中的元素从大到小排序(降序),产生一个新的列表(不会修改原列表)

  1. len(列表) - 获取列表长度(列表中元素的个数)

  2. list(数据) - 将指定数据转换为列表(数据必须是序列:转换的时候直接将序列中的元素作为新的列表)

列表相关方法

1.列表.clear() - 清空指定列表

names = ['犬夜叉', '火影忍者','海贼王']
names.clear()
print(names)    # []

2.列表.copy() - 复制指定列表产生一个一模一样的新列表(地址不同)

copy是对列表进行浅拷贝

3.列表.count(元素) - 统计指定元素在列表中出现的次数

nums = [23, 89, 10, 89, 10, 6, 85]
print(nums.count(10))

4.列表.extend(序列) - 将序列中所有的元素全部添加到列表中

names = [‘犬夜叉’, ‘火影忍者’,‘海贼王’]
names.extend(‘abc’)
print(names) # [‘犬夜叉’, ‘火影忍者’, ‘海贼王’, ‘a’, ‘b’, ‘c’]

5.列表.index(元素) - 获取指定元素在列表中的下标(返回的是0开始的下标值)

如果元素不存在指定列表中会报错
如果当前列表中有多个相同元素,只取第一个下标值

names = ['犬夜叉', '火影忍者', '海贼王']
print(names.index('犬夜叉'))   # 0

6.列表.reverse() - 列表倒序

names = ['犬夜叉', '火影忍者', '海贼王']
names.reverse()
print(names)    # ['海贼王', '火影忍者', '犬夜叉']

7.列表.sort()

列表.sort() - 将列表中的元素从小到大排序(不会产生新的列表)
列表.sort(reverse=True) - 将列表中的元素从大到小排序(不会产生新的列表)

nums = [23, 89, 10, 89, 10, 6, 85]
nums.sort()
print(nums)		# [6, 10, 10, 23, 85, 89, 89]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值