Python2205-day05课后总结

Python2205-day05课后总结

大纲:

列表相关方法
列表补充
如何删除重复元素
列表推导式
1、列表相关方法
  • sum、max、min、count

    numlist = [12, 13, 14, 15, 90]
    
    • sum:计算数字列表中所有元素的和

      print(sum(numlist))			#结果:144
      
    • max/min:求数字列表中最大或最小值

      numlist = [12, 13, 14, 15, 90]
      print(max(numlist))			#90
      print(min(numlist))			#12
      
    • count:统计某个元素在列表中出现的次数

      print(numlist.count(11))	#0,因为numlist列表中没有11,故得出结果为0
      
  • sort()、sorted()

    numlist1 = [10, 30, 50, 100, -100, 5]
    
    • sort():默认将列表从小到大排序,直接修改列表本身,sort返回值为空值

      print(numlist1.sort())		#None
      print(numlist1)				#[-100, 5, 10, 30, 50, 100]
      
    • sorted():默认将列表从小到大排序,sorted不修改列表本身,返回排好序的列表结果

      print('sorted', sorted(numlist1))	#sorted [-100, 5, 10, 30, 50, 100]
      print('sorted', numlist1)			#sorted [10, 30, 50, 100, -100, 5]	
      
  • reverse():将列表倒序输出

    numlist1 = [10, 30, 50, 100, -100, 5]
    print('reverse', numlist1.reverse())	#reverse None
    print('reverse', numlist1)				#reverse [5, -100, 100, 50, 30, 10]
    
  • 切片将列表倒序

    numlist1 = [10, 30, 50, 100, -100, 5]
    print(numlist1[::-1])			#[5, -100, 100, 50, 30, 10]
    
  • index:查找某个元素出现的位置,从左向右找,找到此元素第一次出现的位置后直接停止查找

    list1 = ['abc', 1, 2, 3, 4, 1]
    print(list1.index(1))			#1
    
    • index还可以直接执行从哪个位置开始查找

      print(list1.index(1, list1.index(1) + 1))		#5
      
  • 思考:如果从list1中查找第二个1出现的位置:

    • 1、先查找第一个1的位置

      numIndex = list1.index(1)
      
    • 2、将没有第一个1的列表切出来

      list2 = list1[numIndex + 1:] 
      
    • 3、找新列表中的第一个1(相当于原列表中的第一个1),再将去掉的部分长度补回来

    • print(list2.index(1) + len(list1[0:(numIndex + 1)]))		#5
      
2、列表补充
  • <1>成员运算:in 、not in

    list1 = [1, 2, 3, 'abc', [1, 2, 3]]
    print(1 in list1)
    print([3] not in list1)			#True
    
  • <2>列表比较大小

    • 有序容器比较大小

      • a、两个容器的数据类型保持一致
      • b、比较的第一对不相同元素的大小,并且这两个元素的数据类型要一致
      • c、两个有序容器找不到第一对不相同元素,谁长谁大
      list2 = [1, 2, 4, [1, 2, 4]]
      list3 = [1, 2, 4, [1, 2, 3]]
      print(list3 > list2)			#True
      
3、如何删除重复元素
name_list = ['张三', '李四', '王五', '李四', '王五', '王五', '张三']
  • 通常写法:

    for i in name_list:
        if name_list.count(i) > 1:
            # print(f'{i}是重复的')
            name_list.remove(i)
    print(name_list)				#['李四', '李四', '王五', '张三'],李四重复,没删掉,故此方法行不通
    
  • (1)使用间接删除

    name_list = ['张三', '李四', '王五', '李四', '王五', '王五', '张三']
    names = []
    for i in name_list:
        if i not in names:
            names.append(i)
    print(names)			#['张三', '李四', '王五']
    
  • (2)控制下标

    name_list = ['张三', '李四', '王五', '李四', '王五', '王五', '张三']
    index_ = 0
    while index_ < len(name_list):
        if name_list.count(name_list[index_]) > 1:
            del name_list[index_]
        else:
            index_ += 1
    print(name_list)			#['李四', '王五', '张三']
    
  • (3)倒序删除

    name_list = ['张三', '李四', '王五', '李四', '王五', '王五', '张三']
    for i in range(len(name_list) - 1, -1, -1):
        if name_list.count(name_list[i]) > 1:
            del name_list[i]
    print(name_list)			#['张三', '李四', '王五']
    
列表推导式
  • 作用:在创建列表的同时向列表中添加元素

  • 意义:

    • 1、简化代码,提高代码的可读性。

    • 2、在某些场景下可以使用列表推导式代替append

    • 3、性能比较:列表推导式性能>append

  • 语法一:[表达式 for 变量 in 容器]

    • 表达式就是向列表中添加的元素
    numlist = []
    for i in range(1, 101):
        numlist.append(i)
    print(numlist)				#这是在没有学习推导式之前使用的代码
    
    numlist2 = [i for i in range(1, 101)]
    print(numlist2)				#学习推导式之后使用的代码,明显比之前的要便捷很多
    
  • 语法二:[表达式 for 变量 in 容器 if 条件]

    • for循环执行一次,如果条件成立,表达式的结果添加到列表中
    numlist3 = [i for i in range(0, 101) if i % 5 == 0]
    print(numlist3)				#输出的列表,里面的元素是5的倍数
    
  • 语法三:[表达式 for 变量1 in 容器1 for 变量2 in 容器2]

    • 第一个for循环执行1次,第二个for循环执行N次,第二个for循环每执行一次,表达式的结果就向列表中添加一次。

      list1 = [f'{index} * {column} = {index * column}' for index in range(1, 10) for column in range(1, index + 1)]
      print(list1)					#输出九九乘法表
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值