day 7 - 列表2

day 7 列表2

01列表的增删改

# 1. 增  - 添加元素
# 1)列表.append(元素)   -   在指定列表的最后添加指定的元素(不会产生新的列表,而是直接在原列表中添加)
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)       # [45, 29, 59]

# 2)列表.insert(下标, 元素)       -   将指定元素插入到列表中指定下标对应的元素前
heroes = ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法', '卡牌', '蛇女']
print(heroes)
heroes.insert(-1, '亚索')
print(heroes)   # ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法', '卡牌', '亚索','蛇女']

# 2. 删  -  删除元素
# 1)del 列表[下标]      -       删除列表中指定下标对应的元素
heroes = ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法', '卡牌', '蛇女']
del heroes[1]
print(heroes)   # ['寒冰射手', '维鲁斯', '金克斯', '小法', '卡牌', '蛇女']

# 2) 列表.remove(元素)      -   删除列表中的指定元素(如果元素不存在会报错;如果元素有多个,只删最前面那一个)
heroes = ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法', '维鲁斯', '卡牌', '蛇女']
heroes.remove('小炮')
print(heroes)   #['寒冰射手',  '维鲁斯', '金克斯', '小法', '维鲁斯', '卡牌', '蛇女']

# 3)
# 列表.pop()      -    取走列表最后一个元素,并且返回
# 列表.pop(下标)    -   取走列表中指定下标对应的元素,并且返回
heroes = ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法', '维鲁斯', '卡牌', '蛇女']
print(heroes)       # ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法', '维鲁斯', '卡牌', '蛇女']
result1 = heroes.pop()
print(heroes, result1)       # ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法', '维鲁斯', '卡牌']  蛇女
result2 = heroes.pop(0)
print(heroes, result2)       # ['小炮', '维鲁斯', '金克斯', '小法', '维鲁斯', '卡牌']  寒冰射手

# 3.改  -  修改元素的值
# 列表[下标] = 新元素     -   将列表中指定下标对应的元素改成新元素
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)       # [89, 0, 99, 65, 93, 81, 0, 88, 76, 0, 66]

02列表相关操作

# 1. 列表加法运算
# 列表1 + 列表2  -  将两个列表合并成一个新的列表
A = [10, 20, 30]
B = [100, 200]
C = A + B
print(C)        # [10, 20, 30, 100, 200]
print(A + A)    # [10, 20, 30, 10, 20, 30]

# 2. 列表乘法运算
# 列表 * N 、 N * 列表   -   将列表中的元素重复N次产生一个新的列表
C = A * 2
print(C)        # [10, 20, 30, 10, 20, 30]
print(B * 3)    # [100, 200, 100, 200, 100, 200]

# 3. 列表比较运算
# 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, 100, 200, 300])        # True

# 4. in 和 not in
# 元素 in 列表      -       判断列表中是否存在指定的元素
# 元素 not in  列表     -   判断列表中是否不存在指定的元素
print(10 in [10, 20, 30])       # True
print(10 in [[10, 20], 30])     # False
print([10, 20] in [10, 20, 30])     # False

03列表相关操作

# 1. sum(数字序列)  -  求数字序列中所有元素的数值和
scores = [98, 23, 56, 88, 90, 70]
result = sum(scores)
print(result)      # 425

# 2. max、min
# max(序列)    -  求序列中的最大元素
# min(序列)    -  求序列中的最小元素
scores = [98, 23, 56, 88, 90, 70]
result = max(scores)
print(result)     # 98
result = min(scores)
print(result)     # 23

# 3. sorted
# 1)sorted(序列)    -   将序列中的元素按照从小到大的方式排序,创建一个新的列表并且返回
scores = [50, 98, 23, 56, 88, 99, 70]
result = sorted(scores)
print(result)       # [23, 50, 56, 70, 88, 98, 99]

# 2)sorted(序列, reverse=True)    -   将序列中的元素按照从大到小的方式排序,创建一个新的列表并且返回
scores = [50, 98, 23, 56, 88, 99, 70]
result = sorted(scores, reverse=True)
print(result)       # [99, 98, 88, 70, 56, 50, 23]

# 4. len
# len(序列)  -  统计序列中元素的个数
print(len(scores))          # 7
print(len('abc123'))        # 6
print(len(range(1, 100, 2)))    # 50

# 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]

04 列表相关方法

# 列表.xxx()

# 1. 列表.clear()  - 清空列表
nums = [10, 9, 89, 23]
nums.clear()
print(nums)     # []

# 2. 列表.count(元素)   -   统计列表中指定元素的个数
nums = [10, 9, 89, 23, 10]
print(nums.count(100))    # 0
print(nums.count(9))     # 1

# 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, 10]
print(nums.index(89))           # 2

# 5.列表.reverse()    -   将列表倒序
nums = [10, 9, 89, 23, 50]
nums.reverse()
print(nums)     # [50, 23, 89, 9, 10]

# 6.
# 列表.sort()                 -    将列表中的元素从小到大排序(直接修改原列表元素的顺序)
# 列表.sort(reverse=True)     -    将列表中的元素从大到小排序
nums = [10, 9, 89, 23, 50]
result = nums.sort()
print(nums)         # [9, 10, 23, 50, 89]
print(result)       # None
nums.sort(reverse=True)
print(nums)         # [89, 50, 23, 10, 9]

# sorted(序列)  - 将列表中的元素从小到大排序(不修改原序列中元素的顺序,而是创建一个新的列表)
nums = [10, 9, 89, 23, 50]
result = sorted(nums)
print(nums)     # [10, 9, 89, 23, 50]
print(result)   # [9, 10, 23, 50, 89]

05列表赋值问题

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

# 1.拷贝和直接赋值
# 需求:已知一个列表,现在需要创建和原列表一模一样的新的列表
nums = [10, 20, 30, 40]

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

# 2)拷贝
# 一个变量通过拷贝的方式给另外一个变量赋值,赋值的时候会先复制原来变量中的数据,创建一个新的数据,然后将新的数据对应的内存地址给新的变量
nums3 = nums*1
nums4 = nums + []
nums5 = nums[:]
nums6 = nums.copy()

06 列表推导式

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

# 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)       # [20, 46, 178, 134]

# 案例2:获取nums中所有元素的个位数
nums = [103, 230, 89, 67]
result = [x % 10 for x in nums]
print(result)       # [3, 0, 9, 7]


# 2.列表推导式结构1
"""
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)   # [80, 99, 67, 82, 76]

# 案例2:提取nums中所有奇数的个位数
nums = [103, 230, 89, 67, 78]
result = [x % 10 for x in nums if x % 2 != 0]
print(result)       # [3, 9, 7]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值