day07列表2

列表2
一,增删改
  1. 增 - 添加元素

    1)列表.append(元素) - 在指定列表的最后添加指定元素(不会产生新的列表,而是直接在原列表中添加)

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

heroes.append('剑圣')
print(heroes)

heroes.append('琴女')
print(heroes)

案例:提取scores中不及格的分数

scores = [89, 45, 99, 65, 93, 81, 29, 88, 76, 59, 66]
new_scores = []
for s in scores:
    if s < 60:
        new_scores.append(s)
print(new_scores)

练习1:利用append删除列表中所有的奇数

nums = [89, 45, 99, 65, 93, 81, 29, 88, 76, 59, 66]
news_scores = []
for s in scores:
    if s % 2 != 0
        new_scores.append(s)
print(new_scores)

练习2:将scores中所有不及格的分数改成’补考’

scores = [89, 45, 99, 65, 93, 81, 29, 88, 76, 59, 66]
new_scores = []
for x in scores:
    if x < 60:
        new_scores.append('补考')
    else:
        new_scores.append(x)
print(new_scores)

2)列表.insert(下标, 元素) - 将指定元素插入到列表中指定下标对应的元素前

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

heroes.insert(-1, '亚索')
print(heroes)

heroes.insert(0, '石头人')
print(heroes)

2.删 - 删除元素

1)del列表[下标] - 删除列表中指定下标对应的元素

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

del heroes[1]
print(heroes)

del heroes[1]
print(heroes)

2)列表.remove(元素) - 删除列表中的指定元素(如果元素不存在会报错,如果元素有多个,只删最前面那一个)

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

heroes.remove('小炮')
print(heroes)

# heroes.remove('塔姆')       # ValueError: list.remove(x): x not in list

heroes.remove('维鲁斯')
print(heroes)                # ['寒冰射杀', '金克斯', '小法', '维鲁斯', '卡牌', '蛇女']
  1. 改 - 修改元素的值

    列表[下标] = 新元素 - 将列表中指定下标对应的元素改成新元素

    heroes = ['寒冰射杀', '小炮', '维鲁斯', '金克斯', '小法', '维鲁斯', '卡牌', '蛇女']
    print(heroes)
    
    heroes[1] = '孙悟空'
    print(heroes)
    

    练习:将scores中所有低于60分的成绩修改成0分(使用改)

scores = [89, 45, 99, 65, 93, 81, 29, 88, 76, 59, 66]
# 方法一
for index in range(len(scores)):
    if scores[index] < 60:
        scores[index] = 0
print(scores)

# 方法二
for index, item in enumerate(scores):
    if item < 60:
        scores[index] = 0
print(scores)
二,列表相关操作
  1. 列表加法运算

    列表1 + 列表2 - 将两个列表合并成新的列表

A = [10, 20, 30]
B = [100, 200]
C = A + B             # [10, 20, 30, 100, 200]
print(C)

print(A + A)          # [10, 20, 30, 10, 20, 30]
  1. 列表乘运算

    列表 * N ,N * 列表 - 将列表中的元素重复N次产生一个新元素

C = A * 2
print(C)              # [10, 20, 30, 10, 20, 30]

print(B * 3)          # [100, 200, 100, 200, 100, 200]

print(['小明', '小花'] * 3)         # ['小明', '小花', '小明', '小花', '小明', '小花']
  1. 列表比较运算

    1)比较是否相等:==,!=

print([10,20,30] == [10,20,30])     #True
print([10,20,30] == [10,30,20])     #False

​ 2)比较大小:>,<,>=,<=

列表1 > 列表2

两个列表比较大小,比较的是第一对不相等的元素的大小(相同位置上的元素是一对)

print([10,20,30] > [1,100,200,300,400])     #True
print([10,20,30] > [10,2,300,400,500])      #True

4.in 和 not in

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

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

print(10 in [10,20,30])
print(10 in [10,20], 30)
print([10,20] in  [10,20,30])

练习:已经列表A和B, 打印A和B的公共元素

A = ['后羿', '甄姬', '鲁班7号', '赵云']
B = ['小乔', '孙悟空', '猪八戒', '后羿', '盾山', '赵云']
for x in A:
    if x in B:
     print(x)
三,列表相关函数

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

scores = [98, 23, 56, 88, 90, 70]
result = sum(scores)
print(result)

result = sum(range(101))
print(result)

2.max,min

max(序列) - 求序列中最大元素

min(序列) - 求序列中最小元素

scores = [98, 23, 56, 88, 90, 70]
result = max(scores)
print(scores)

result = min(scores)
print(result)

补充:求最大值的逻辑

假设第一个元素最大保存到变量中,然后依次取出后面每个元素和保存最大变量进行比较,如果后面取出来的值比最大值还大,就更新最大

scores = [98, 23, 56, 88, 90, 70]
max1 = scores[0]
for x in scores[1:]:
    if x > max1:
        max1 = x        # 更新最大值
print(max1)

3.sorted

1)sorted(序列) - 将序列中的元素按照从小到大的方式排序,创建一个新的列表

scores = [98, 23, 56, 88, 90, 70]
result = sorted(scores)
print(scores)               # [98, 23, 56, 88, 90, 70]

# 2)sorted(序列, reverse=True)
scores = [98, 23, 56, 88, 90, 70]
result = sorted(scores, reverse=True)
print(scores)

4.len

len(序列) - 统计序列中元素的个数

print(len(scores))
print(len('abc123'))
print(len(range(1, 100, 2)))

5.list

list(序列) - 将指定的序列转换成列表(任何序列都可以转换成列表,转换的时候直接将序列中元素作为列表的元素)

result = list('abc123')
print(result)           # ['a', 'b', 'c', '1', '2', '3']

result = list(range(5))
print(result)           # [0, 1, 2, 3, 4]
四,列表相关方法

列表.xxx()

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

nums = [10, 9, 89, 23]
print(nums)

nums.clear()
print(nums)

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

nums = [10, 9, 89, 23]
print(nums.count(100))
print(nums.count(9))
print(nums.count(10))

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

list1 = [10, 20]

list1.extend([100, 200])
print(list1)              # [10, 20, 100, 200]

list1.extend('abc')
print(list1)              # [10, 20, 100, 200, 'a', 'b', 'c']

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

nums = [10, 9, 89, 23]
# print(nums.index(100))      # ValueError: 100 is not in list
print(nums.index(89))       # 2
print(nums.index(10))       # 0
print(nums.index(23))       # 3

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

nums = [10, 9, 89, 23, 50]
nums.reverse()
print(nums)

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

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

nums = [10, 9, 89, 23, 50]
result = nums.sort()
print(nums)            # [9, 10, 23, 50, 89]
print(result)          # None

nums = [10, 9, 89, 23, 50]
nums.sort(reverse=True)
print(nums)

sorted(序列) - 将列表中的元素从小到大排序(不修改原序列中元素的顺序,而是创建一个新的列表)

nums = [10, 9, 89, 23, 50]
result = sorted(nums)
print(nums)
print(result)
五,列表赋值问题

补充:python中的变量保存数据,保存的数据在内存中的地址(python中变量全部都是变量)

1.拷贝和直接赋值

需求:已知一个列表,现在需要创建和原列表一模一样的新列表

1)直接赋值 - 一个变量直接给另外一个变量赋值,赋的是地址,赋值后两个变量指向的是同一块内存

nums2 = nums
print('nums:', nums)
print('nums2:', nums2)

2)拷贝

一个变量通过拷贝方式给另外一个变量赋值,赋值的时候会先复制原来变量中的数据,创建一个新的数据,然后将新的数据对应的内存地址给新的变量.

nums3 = nums*1
print('nums3:', nums3)

nums4 = nums + []
print('num4:', nums4)

nums5 = nums[:]
print('num5:', nums5)

nums6 = nums.copy()
print('num6:', nums6)

print('----------------------------------------------------修改后-------------------------------------------------')
nums.append(100)
print('nums:', nums)

print('nums2', nums2)
六,列表推导式

列表推导式的作用:快速创建列表的表达式(代码简洁)

1.列表推导式结构1

1)语法:

[表达式 for 变量 in 序列]

2)让变量去序列中取值,一个一个的取,取完为止,每取一个值就计算一次表达式的结果,并且将计算结果作为列表的一个元素

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

result = [x*2 for x in range(5)]
print(result)       # [0, 2, 4, 6, 8]

案例1:将nums中所有的元素乘以2

nums = [10, 23, 89, 67]
result = [x**2 for x in nums]
print(result)

案例2:获取nums中所有元素的个位数

nums = [103, 230, 89, 67]
result = [x % 10 for x in nums]
print(result)

2.列表推导式

1)语法:

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

2)让变量去序列中取值,一个一个的取,取完为止,每取一个值就判断一次条件是否成立,如果成立就计算表达式值作为列表的元素

result = [x * 2 for x in range(5) if x % 2 == 0]
print(result)            # [0, 4, 8]

案例1:删除scores中所有不及格的分数

scores = [80, 99, 23, 67, 56, 82, 76, 45]
result = [x for x in scores if x >= 60]
print(result)

案例2:提取nums中所有奇数的个数

nums = [103, 230, 89, 67, 78]
result = [x % 10 for x in nums if x % 2 != 0]
print(result)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小*生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值