zoukankan      html  css  js  c++  java
  • 012 列表的一些常用操作符

     列表的一些常用操作符
    比较操作符
    逻辑操作符
    连接操作符
    重复操作符
    成员关系操作符

    比较操作符: 
    >>> list1 = [123]
    >>> list2 = [234]
    >>> list1 > list2
    False
    >>> list2 = [234,123]
    >>> list1 = [123,456]
    >>> list1 > list2
    False
    >>> 
      列表比较是取第0个即(123和234)的大小返回值。
    字符串的比较是比较ASC II的大小
    当然,逻辑关系也可以比较 
    >>> list3 = [123,456]
    >>> (list1 < list2) and (list1 == list3)
    True
    >>> 
     字符串可以用+号作为拼接,也可以用*号作为重复 
    >>> list4 = list1 + list2
    >>> list4
    [123, 456, 234, 123]
    >>> list0 = list1 * 3
    >>> list0
    [123, 456, 123, 456, 123, 456]
    >>> 
     相当于之前学过的extend()方法,但+号不能用来新增一个元素进列表,添加元素来扩展列表用之前所学3个方法,显得语法比较规范。
     也可以用赋值操作符,如  
    >>> list3
    [123, 456]
    >>> list3 *= 3
    >>> list3
    [123, 456, 123, 456, 123, 456]
    >>> list3 *= 5
    >>> list3
    [123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456]
    >>>
     
    成员关系操作符: 
    >>> 123 in list3
    True
    >>> 'fishdm' not in list3
    True
    >>> 123 not in list3
    False
    >>> 
     但判断列表里嵌套列表里的元素,看情况如何 
    >>> list5 = [123,['fishdm','seven'],456]
    >>> 'fishdm' in list5
    False
    >>> 
     ok,系统只判断第一层列表元素,列表中的列表元素不能判断出来,那如果要判断列表中列表的元素应该如何操作? 
    >>> 'fishdm' in list5[1]
    True
    >>> 
     之前讲过使用索引号访问列表里的值,那么列表中的列表中的值该如何访问呢? 
    >>> list5[1][1]
    'seven'
    >>> 
     

    列表类型的内置函数(列表的小伙伴们) 
    >>> dir(list)
    ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
    >>>  
    常用的如append,extend都学过,现在再来看几个比较常用的函数
     count()计算它的参数在列表中出现的次数。  
    >>> list3
    [123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456]
    >>> list3.count(123)
    15
    >>>  
     
     index()返回参数在列表中的位置,有两个默认的参数。如 
    >>> list3.index(123)
    0
    >>> list3.index(123,3,7)        #这里是指在list3里的[3:7]里查找(123)的位置,3是指列表list3里的起始位置,7是指结束位置,
    4
    >>> 
     
     reverse()将整个列表原地翻转(逆行) 
    >>> list5
    [456, ['fishdm', 'seven'], 123]
    >>> list5.reverse()
    >>> list5
    [123, ['fishdm', 'seven'], 456]
    >>> 
     
     sort()用指定的方式对列表成员进行排序,默认是从小到大排序。  
    >>> list6 = [4,2,5,1,9,23,32,0]
    >>> list6.sort()
    >>> list6
    [0, 1, 2, 4, 5, 9, 23, 32]
    >>> 
     sort()有3个参数:sort(func,key,reverse),无参数是默认从小到大,第一个是指排序的算法,第二个是指跟这个算法搭配的关键词。
    第三个参数跟上面的reverse()方法类似,默认参数是false即没有逆行。 
    >>> list6
    [0, 1, 2, 4, 5, 9, 23, 32]
    >>> list6.sort(reverse = True)
    >>> list6
    [32, 23, 9, 5, 4, 2, 1, 0]
    >>> 
     
    拷贝概念内容的补充:(参考上节课课后练习最后一题) 
    >>> list6
    [32, 23, 9, 5, 4, 2, 1, 0]
    >>> list7 = list6[:]
    >>> list7
    [32, 23, 9, 5, 4, 2, 1, 0]
    >>> list8 = list6
    >>> list8
    [32, 23, 9, 5, 4, 2, 1, 0]
    >>> list6.sort()
    >>> list6
    [0, 1, 2, 4, 5, 9, 23, 32]
    >>> list7
    [32, 23, 9, 5, 4, 2, 1, 0]
    >>> list8
    [0, 1, 2, 4, 5, 9, 23, 32]
    >>> 
     list7 = list6[:]
     list7是list6的拷贝,拷贝之后list7是新建的一个列表,跟list6无任何关系。当list6改变时,list7还是原来的值。
      list8 = list6
    list8是list6的指定标签,等于list6的列表有两个标签,当list6改变时,list8跟着改变。
     
    测试题:
       
    0. 注意,这道题跟上节课的那道题有点儿不同,回答完请上机实验或参考答案。
    >>> old = [1, 2, 3, 4, 5]
    >>> new = old
    >>> old = [6]
    >>> print(new)
    复制代码
    如果不上机操作,你觉得会打印什么内容?
    答:1,2,3,4,5

    1. 请问如何将下边这个列表的'小甲鱼'修改为'小鱿鱼'?
    list1 = [1, [1, 2, ['小甲鱼']], 3, 5, 8, 13, 18]
    复制代码
    答:   list1[1][2][0] = '小鱿鱼'

    2. 要对一个列表进行顺序排序,请问使用什么方法?
    答:list1.sort()

    3. 要对一个列表进行逆序排序,请问使用什么方法?
    答:list1.reverse()
    论坛参考答案:
    >>> 列表名.sort()
    >>> 列表名.reverse()  
    或者
    >>> 列表名.sort(reverse=True)
    先顺序,再逆序
     
    4. 列表还有两个内置方法没给大家介绍,不过聪明的你应该可以自己摸索使用的门道吧:copy() 和 clear()   
    答: 
    >>> list1
    [1, [1, 2, ['小鱿鱼']], 3, 5, 8, 13, 18]
    >>> list1.copy()
    [1, [1, 2, ['小鱿鱼']], 3, 5, 8, 13, 18]
    >>> list1.clear()
    >>> list1
    []
    >>> 
     
    5. 你有听说过列表推导式或列表解析吗?  
    没听过?!没关系,我们现场来学习一下吧,看表达式:
    >>> [ i*i for i in range(10) ]
    复制代码
    你觉得会打印什么内容?
    >>> [i*i for i in range(10)]
    [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
    复制代码
    居然分别打印了0到9各个数的平方,然后还放在列表里边了有木有?!
    列表推导式(List comprehensions)也叫列表解析,灵感取自函数式编程语言 Haskell。Ta 是一个非常有用和灵活的工具,可以用来动态的创建列表,语法如:  
    [有关A的表达式 for A in B]  
    例如
    >>> list1 = [x**2 for x in range(10)]
    >>> list1
    [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
    复制代码
    相当于
    list1 = []
    for x in range(10):
        list1.append(x**2)
    复制代码
    问题:请先在 IDLE 中获得下边列表的结果,并按照上方例子把列表推导式还原出来。
    >>> list1 = [(x, y) for x in range(10) for y in range(10) if x%2==0 if y%2!=0]
    复制代码
    答:结果不一样呀!!!! 
    list1 = []
    for x in range(10):
        for y in range(10):
            if x%2 == 0:
                if y%2 != 0:
                   list1.append((x,y))
                   print (list1)
     用shell操作: 
    >>> list1 = []
    >>> for x in range(10):
        for y in range(10):
            if x%2 == 0:
                if y%2 != 0:
                    list1.append((x,y))
                    
    >>> list1
    [(0, 1), (0, 3), (0, 5), (0, 7), (0, 9), (2, 1), (2, 3), (2, 5), (2, 7), (2, 9), (4, 1), (4, 3), (4, 5), (4, 7), (4, 9), (6, 1), (6, 3), (6, 5), (6, 7), (6, 9), (8, 1), (8, 3), (8, 5), (8, 7), (8, 9)]
    >>> 
     

    6. 活学活用:请使用列表推导式补充被小甲鱼不小心涂掉的部分  

    答:不会   
    表达式容易理解,但还需长时间复习消化才行,不然一转背就忘了。
     论坛参考答案:
    >>> list3 = [name + ':' + slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]]
    复制代码 

  • 相关阅读:
    vue封装axios请求
    搭建vue开发环境
    webpack搭建vue环境报错
    JS的执行顺序 setTimeout与Promise async/await
    position属性脱离文档流覆盖其他内容
    MVC和MVT
    HTTP常见请求方式(get,post,put,delete)
    三次握手四次挥手
    web工作流程,中间件,请求顺序
    Vue整理
  • 原文地址:https://www.cnblogs.com/fishdm/p/3573926.html
Copyright © 2011-2022 走看看