dya6 列表的相关函数

本文详细介绍了Python中列表的基本操作函数如max、min、sum、len等,以及sorted、reversed、list等,同时涵盖了列表方法如clear、copy、count、extend、index、reverse、sort和列表推导式的应用实例。通过实例演示如何对列表进行去重、排序、筛选和元素变换,适合初学者和进阶者学习列表处理技巧。

列表的相关函数

  1. 列表(序列)相关函数:max、min、sum、len、sored、reversed、list

    1. max

    max(序列): - 获取序列中最大的元素(序列中的元素本身必须支持比较运算,并且元素之间可以比较大小)

    例如:

    nums = [50, 46, 52, 9, 13]
    print(max(nums))   # 52
    
    1. min

    min(序列) - 获取序列中最小的元素

    例如:

    print(min(nums))   # 9
    
    1. sum

    sum(序列) - 求序列中所有元素的和(序列中的元素必须是数字)

    例如:

    print(sum(nums))   # 170
    
    1. len

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

    例如:

    print(len([10, 20 , 'ace', [10, 20], range(3)]))  # 5
    
    1. sored

    sorted(序列) - 将序列中的元素从小到大排序,返回一个排完序以后的新列表

    sorted(序列,reverse=True) - 将序列中的元素从大到小排序,返回一个排完的新列表

    例如:

    nums = [50, 46, 52, 9, 13]
    new_nums = sorted(nums)
    print(nums, new_nums)
    
    new_nums = sorted(nums, reverse=True)
    print(nums, new_nums)
    
    1. reversed

    reversed(序列) - 将序列中的元素倒序,产生一个新的迭代器(序列)

    例如:

    nums = [50, 46, 52, 9, 13]
    reversed(nums)
    print(nums)
    
    1. list

    list(序列) - 将其他序列转换成列表list(序列) - 将其他序列转换成列表

    例如:

    print(list('ace'))
    print(list(range(1, 4)))
    
  2. 列表相关方法

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

    例如:

    names = ['罗小黑战记', '海贼王', '一人之下', '进击的巨人', '死亡笔记']
    names.clear()
    print(names)  # []  
    
    1. 列表.copy() - 复制原列表产生一个一模一样的新列表

    例如:

    names = ['罗小黑战记','海贼王','一人之下','进击的巨人','死亡笔记']
    new_names = names.copy()
    print(new_names)    #['罗小黑战记', '海贼王', '一人之下', '进击的巨人', '死亡笔记']
    
    1. 列表.count(元素) - 统计指定元素在列表中出现的次数

    例如:

    names = ['罗小黑战记', '海贼王', '海贼王', '海贼王', '一人之下', '进击的巨人', '死亡笔记']
    print(names.count('死亡笔记'))  # 1
    print(names.count('死神'))     # 0
    print(names.count('海贼王'))   # 3
    
    1. 列表.extend(序列) - 将序列中所有的元素都添加到列表中

    例如:

    names = ['罗小黑战记', '海贼王', '一人之下', '进击的巨人', '死亡笔记']
    names.extend(['妖精的尾巴'])
    print(names)
    
    1. 列表.inde(元素) - 获取指定元素对应的下标(从0开始的下标)

    例如:

    names = ['罗小黑战记', '海贼王', '一人之下', '进击的巨人', '死亡笔记']
    print(names.index('一人之下'))  # 2
    # print(names.index('火影忍者'))
    # 报错:ValueError: '火影忍者' is not in list
    print(names.index('海贼王'))  # 多个只获取第一个
    
    1. 列表.reverse() - 将列表倒叙(不会产生新的列表)

    例如:

    names = ['罗小黑战记', '海贼王', '一人之下', '进击的巨人', '死亡笔记']
    names.reverse()
    print(names)  # ['死亡笔记', '进击的巨人', '一人之下', '海贼王', '罗小黑战记']
    
    1. 列表.sort() - 将列表从小到大排序

    例如:

    nums = [10, 32, 90, 40, 70, 50]
    names.sort()
    print(nums)  # [10, 32, 90, 40, 70, 50]
    
  3. 列表推导式

    列表推导式 - 用来创建列表的表达式

    推导式的引用:创建列表、元素筛选、元素的变换

    1. 推导式通推导式通用格式1
    [表达式 for 变量 in 序列]
    
    创建列表的原理:
    list1 = []
    for 变量 in 序列:
        list1.append(表达式)
    

例如:

list1 = [x for x in range(4)]
print(list1)   # [0, 1, 2, 3]

list2 = [2*x + 3 for x in range(4)]
print(list2)  # [3, 5, 7, 9]

list3 = [x*2 for x in 'abc']
print(list3)   # ['aa', 'bb', 'cc']

练习:已知列表scores = [89, 34, 56, 23, 90, 100],将列表中的成绩转换成十分制的值

scores = [89, 34, 56, 23, 90, 100]
y = [x/10 for x in scores]
print(y)   # [8.9, 3.4, 5.6, 2.3, 9.0, 10.0]

​ 2. 推导式通用格式2

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

原理:
list1 = []
for 变量 in 序列:
    if 条件语句:
        list1.append(表达式)

例如:

nums = [23, 89, 80, 25, 9, 13]
new_nums = [x for x in nums if x % 2 != 0]
print(new_nums)

list1 = [12, 'abc', True, 0, 0.00, 0.02, '', [], [1,2]]
y = [x for x in list1 if x]
print(y)  # [12, 'abc', True, 0.02, [1, 2]]

补充:三目运算符

C的三目运算:
表达式1?表达式2:表达式3 -> 如果表达式1的值是0整个运算表达式的结果是表达式3,
否则整个运算表达式的解说是2
变量 = 表达式2 if 表达式1 else 表达式3

age = 27
result ='成年' if age >= 18 else '未成年'
print(result)   # 成年
总理
  1. 整体变化 - 将原序列中的元素通过统一的规则转换成一个新的序列

    方案:

    [表达式 for 变量 in 序列]  -  表达式 用来描述新序列中的元素和原序列元素之间的规则
    nums = [23, 40, 50, 45, 13, 933]
    result = [x % 10 for x in nums]
    print(result)  # [3, 0, 0, 5, 3, 3]
    
  2. 部分变换(按照两种不同的方式变换)

    方案:

    [三目运算 for 变量 in 序列]
    list1 = [933, 'ace', 45, '123', [10,30], 1.45]
    list2 = [x*10 if type(x) in [int, float] else x for x in list1]
    print(list2)   # [9330, 'ace', 450, '123', [10, 30], 14.5]
    
  3. 筛选、删除

    方案:

    [表达式 for 变量 in 序列 if 条件语句]
    score = [56, 50, 78, 89, 42, 30]
    result = [x for x in score if x >= 60]
    print(result)  # [78, 89]
    

作业

1.创建一个列表,列表中有10个数字, 保证列表中元素的顺序,对列表进行排重,并对列表使用进行降序排序

nums = [70, 88, 91, 70, 107, 234, 91, 177, 282, 197]
nums1 = []
for x in nums:
    if x not in nums1:
        nums1.append(x)
        nums1 = sorted(nums1, reverse=True)
    print(nums1)

2.利用列表推导式, 完成以下需求

a. 生成一个存放1-100中各位数为3的数据列表

z = [x for x in range(3, 103, 10)]
print(z)

b. 利用列表推到是将 列表中的整数提取出来

list1 =[True, 17, "hello", "bye", 98, 34, 21]
z = [x for x in list1 if type(x) == int]
print(z)

c.利用列表推导式 存放指定列表中字符串的长度

list1 =[True, 17, "hello", "bye", 98, 34, 21]
z = [x for x in list1 if type(x) == int]
print(z)

d. 利用列表推导式删除列表中整数个位数小于5的元素

k = [24, 'abc', 99, True, 21, 38, 'hello']
z = [x for x in k if type(x) != int or type(x) == int and x % 10 > 5]
# type(x) == int and x % 10 > 5
print(z)

3.已知代码如下,请回答出各个print的结果 并说明原因

nums = [17, 39, 28, 51]
nums2 = nums
nums2.pop()
print(len(nums))
"""
nums = [17, 39, 28, 51]
nums2 = [17, 39, 28, 51]
nums2 = [17, 28, 28]
print = len nums == 17 39 28 == 3
"""
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值