day07列表(2)

day07 - 列表(2)

一、增加元素操作

1、append函数

  • 语法:列表.append(元素)
  • 在指定列表最后添加一个元素(不会产生新的列表,而是直接在原列表中添加)
heroes = ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法', '卡牌', '蛇女']
print(heroes)
heroes.append('剑圣')
print(heroes)   # ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法', '卡牌', '蛇女']
  • 案例:提取scores中不及格队分数(可以看做删除及格的分数)
scores_1 = []
for index in scores:
    if index < 60:
        scores_1.append(index)
print('提取scores中不及格队分数', scores_1)
  • 练习1:利用append删除列表中所有奇数
nums = [89, 45, 99, 65, 93, 81, 29, 88, 76, 59, 66]
nums_1 = []
for index in nums:
    if index % 2 == 0:
        nums_1.append(index)
print('利用append删除列表中所有奇数', nums_1)
  • 练习2:将scores中所有不及格的分数改成’补考’
scores = [89, 45, 99, 65, 93, 81, 29, 88, 76, 59, 66]

scores_1 = []
for index in scores:
    if index < 60:
        scores_1.append('补考')
    else:
        scores_1.append(index)
print('不及格的分数改成补考:', scores_1)
# [89, '补考', 99, 65, 93, 81, '补考', 88, 76, '补考', 66]

2、insert函数

  • 语法:列表.insert(下标,元素)
  • 将指定元素插入列表指定下标对应元素前
heroes = ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法', '卡牌', '蛇女']
print(heroes)

heroes.insert(-1, '亚索')
print(heroes)  # ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法', '卡牌', '亚索', '蛇女']

heroes.insert(0, '石头人')
print(heroes)  # ['石头人', '寒冰射手', '小炮', '维鲁斯', '金克斯', '小法', '卡牌', '亚索', '蛇女']

二、删除元素操作

1、使用del

  • 语法:del 列表[下标]
  • 删除列表中指定下标对应的元素,数据在内存清除
del heroes[1]
print(heroes)  # ['寒冰射手', '维鲁斯', '金克斯', '小法', '卡牌', '蛇女']

del heroes[1]
print(heroes)  # ['寒冰射手', '金克斯', '小法', '卡牌', '蛇女']

2、remove函数

  • 语法:列表.remove(元素)
  • 删除列表中的指定元素,数据在内存清除
heroes = ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法', '卡牌', '蛇女', '维鲁斯']
heroes.remove('小炮')
print(heroes)
  • 元素有多个,只删最前面哪一个
heroes = ['寒冰射手',  '维鲁斯', '金克斯', '小法', '卡牌', '蛇女', '维鲁斯']
heroes.remove('维鲁斯')
print(heroes)  # ['寒冰射手', '金克斯', '小法', '卡牌', '蛇女', '维鲁斯']
  • 元素不存在,报错
# heroes.remove('塔姆')     # 元素不存在,报错ValueError: list.remove(x): x not in list

3、pop函数

  • 语法:数据还在内存中
    • 列表.pop() - 取出列表中最后一个元素并且返回取出的结果
    • 列表.pop(下标) - 取出列表中指定小标的元素,并且返回取出的结果
heroes = ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法', '卡牌', '蛇女']
print(heroes)  # ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法', '卡牌', '蛇女', '维鲁斯']

result_1 = heroes.pop()
print(heroes)  # ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法', '卡牌', '蛇女']
print(result_1)  # 蛇女

result1 = heroes.pop(0)
print(heroes)  # ['小炮', '维鲁斯', '金克斯', '小法', '卡牌', '蛇女']
print(result1)  # 寒冰射手

三、修改元素操作

  • 语法:列表[下标]=新元素
  • 将列表中对应下标改成新的元素
# 列表[下标]=新元素    -   将列表中对应下标改成新的元素
heroes = ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法', '卡牌', '蛇女']
heroes[1] = '孙悟空'
print(heroes)  # ['寒冰射手', '孙悟空', '维鲁斯', '金克斯', '小法', '卡牌', '蛇女']
  • 练习:将scores中所有低于60分的成绩修改成0分(使用改)

方法1:for遍历

for index in range(len(scores)):
    if scores[index] < 60:
        scores[index] = 0
print('不及格的分数改成0分:', scores)

方法2:enumerate

for index, item in enumerate(scores):
    if item < 60:
        scores[index] = 0
print('不及格的分数改成0分:', scores)

四、列表相关操作

1、列表加法运算

  • 语法:列表1+列表2
  • 将两个列表合成一个新的列表
A = [10, 2, 6, 4]
B = [2, 10, 50]
C = A + B
print(C)  # [10, 2, 6, 4, 2, 10, 50]
print(A + A)  # [10, 2, 6, 4, 10, 2, 6, 4]

2、列表乘法运算

  • 语法:列表N、N列表
  • 将列表中的元素重复N次产生新的列表,N必须是整数
C = A * 2
print(C)  # [10, 2, 6, 4, 10, 2, 6, 4]
print(B * 3)  # 注意顺序  [2, 10, 50, 2, 10, 50, 2, 10, 50]

3、列表比较运算

  • 比较是否相等 ==、!=
print([2, 10, 50] == [2, 10, 50])  # True
print([10, 2, 50] == [2, 10, 50])  # False  顺序影响结果
  • 比较大小 <、>、<=、>=
    • 列表1>列表2:只能列表之间比较
    • 比较的是第一对不相等的元素的大小(相同位置上的元素是一对)
print([10, 2, 50] > [2, 10, 50])    # True
print([10, 20, 50] > [10, 10, 50])  # True

4、列表的 in 和not in

  • 元素 in 列表
  • 判断指定数据是否存在列表中
print(10 in [10, 20, 50])
  • 元素 not in 列表
  • 判断指定数据是否不存在列表中
print(10 not in [10, 20, 50])
print([10] in [10, 20, 50])
print(10 in [[10], 20, 50])
  • 练习:已经列表A和B, 打印A和B的公共元素
A = ['后羿', '甄姬', '鲁班7号', '赵云']
B = ['小乔', '孙悟空', '猪八戒', '后羿', '盾山', '赵云']
C=[]
for i in A:
    if i in B:
        C.append(i)
print(C)

五、列表相关函数

1、sum(数字序列)

  • 数字序列中所有元素的数值和
scores = [34, 90, 78, 65, 99]
result_1 = sum(scores)
print(result_1)
result_1 = sum(range(1,101,2))
print(result_1)

2、max、min (序列中元素支持比较运算)

  • max(序列) - 求序列中的最大元素
result_1=max(scores)
print(result_1)
  • min(序列) - 求序列中的最小元素
result_1=min(scores)
print(result_1)
  • 补充:求最大值最小值逻辑
max=scores[0]
for i in scores[1:]:
    if max < i:
        max=i   # 更新最大值
print(max)      # 99

min=scores[0]
for i in scores[1:]:
    if min > i:
        min=i
print(min)      # 34

3、sorted( 排序函数)

  • sorted(序列)
    • 将序列中的元素按照从小到大的方式排序,创建一个新的列表,并且返回
scores = [34, 90, 78, 65, 99]
result=sorted(scores)
print(result)       # [34, 65, 78, 90, 99]
  • sorted(序列,reverse=True)
    • 将序列中的元素按照从大到小的方式排序,创建一个新的列表,并返回
scores = [34, 90, 78, 65, 99]
result=sorted(scores,reverse=True)  #True   -  从大到小
print(result)

4、len

  • len(序列)
    • (除了迭代器、生成器)统计序列中元素个数
    • 序列长度 :序列中元素个数
print(len(scores))
print(len('abc123456'))
print(len(range(0,101,2)))

5、list(类型名)

  • 将指定的序列转换成列表,数据必须是序列(如何序列都可以转换成列表)
  • 直接将序列中的元素转换成列表中的元素
result=list('abc12345')
print(result)   # ['a', 'b', 'c', '1', '2', '3', '4', '5']

result=list(range(10))
print(result)       # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

六、列表相关方法

1、列表.clear() - 清空列表

nums=[55,66,89,45,12,36,54,75]
nums.clear()
print(nums)     # []

2、列表.count(元素) - 统计列表中指定元素的个数

nums=[55,66,89,45,12,36,54,75,55]
print(nums.count(55))       # 2
print(nums.count(100))      # 0

3、列表.extend(序列) - 将序列中的元素全部添加到列表中

list_1=[10,20]
list_1.extend([20,30,55])
print(list_1)       # [10, 20, 20, 30, 55]
list_1.extend('abc')
print(list_1)       # [10, 20, 20, 30, 55, 'a', 'b', 'c']
list_1.extend(range(0,9,2))
print(list_1)       # [10, 20, 20, 30, 55, 'a', 'b', 'c', 0, 2, 4, 6, 8]

4、列表.index(元素) - 列表中获取指定元素对应的下标(返回的是从0开始的下标值

  • 元素不存在 - 报错
  • 多个相同元素 - 取第一个元素下标
nums=[55,66,89,45,12,36,54,75,55]
print(nums.index(89))       # 2
# print(nums.index(100))      # 报错  ValueError: 100 is not in list

5、列表.reverse() - 将列表倒序

nums=[55,66,89,45,12,36,54,75,55]
nums.reverse()
print('将列表倒序',nums) # [55, 75, 54, 36, 12, 45, 89, 66, 55]

6、列表.sort() - 将列表中元素从小到大排序(直接修改源列表元素顺序)

nums=[55,66,89,45,12,36,54,75,33]
result=nums.sort()
print(nums)    # [12, 33, 36, 45, 54, 55, 66, 75, 89]
print(result)   #None

7、列表.sort(reverse=True) - 将列表中元素从大到小排序

nums=[55,66,89,45,12,36,54,75,33]
nums.sort(reverse=True)
print(nums)     # [89, 75, 66, 55, 54, 45, 36, 33, 12]

七、列表复制

1、直接赋值

  • 一个变量直接给另一个变量复制,赋值后两个变量指向同一内存
nums=[55,66,89,45,12,36,54,75,33]
nums_1=nums
print('nums:',nums)
print('nums_1:',nums_1)

2、拷贝

  • 通过拷贝方式给另外一个变量赋值,拷贝是先复制原来变量中的数据,创建一个新的数据,如何将新的数据对应的内存地址新的变量
nums_2=nums*1
print('nums_2:',nums_2)

nums_3=nums+[]
print('nums_3:',nums_3)

nums_4=nums[:]
print('nums_4:',nums_4)

nums_5=nums.copy()
print('nums_5:',nums_5)

3、补充:

  • python变量保存数据,存储的是数据在内存空间中的地址(python中的变量都是指针变量

八、列表推导式

1、列表推导式作用:

  • 快速创建列表(代码简洁)
  • 对列表元素进行筛选

2、列表推导式结构1:

  • 语法:

    [表达式 for 变量 in 序列]

  • 原理:

    变量在序列中一个一个取值,每取一次就进行一次表达式计算,并将计算结果作为列表的元素

result = [10 for i in range(5)]
print(result)  # [10, 10, 10, 10, 10]

result = [i * 2 for i in range(5)]
print(result)  # [0, 2, 4, 6, 8]
  • 案例1:将num中所有元素*2
num2 = [10, 23, 89, 67]
result = [i * 2 for i in num2]
print(result)  # [20, 46, 178, 134]
  • 案例2: 取num中所有元素的个位数的值
num2 = [10, 23, 89, 67]
result = [i % 10 for i in num2]
print(result)  # [0, 3, 9, 7]

3、列表推导式结构2:

  • 语法:

    [表达式 for 变量 in 序列 if 条件语句 ]

  • 原理:

    变量在序列中一个一个取值,每取一次就进行一次if语句的条件语句:

    条件满足,执行表达式并将计算结果作为列表的元素;
    如果条件不成立就不进行表达式计算。

result = [i * 2 for i in range(5) if i % 2 == 0]
print(result)  # [0, 4, 8]
  • 案例:num中所有奇数的个位数的值
num2 = [10, 23, 89, 67]
result = [i % 10 for i in num2 if i % 2 != 0]
print(result)   #[3, 9, 7]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值