zoukankan      html  css  js  c++  java
  • AttributeError: 'list' object has no attribute 'extends' && list详解

    拼写错误

    是extend  而不是extends

    出错demo:

    1 In [27]: c = [2,3]                                                              
    2 
    3 In [28]: c.extends([5])                                                         
    4 ---------------------------------------------------------------------------
    5 AttributeError                            Traceback (most recent call last)
    6 <ipython-input-28-2022e87158c8> in <module>
    7 ----> 1 c.extends([5])
    8 
    9 AttributeError: 'list' object has no attribute 'extends'

    调试:

    既然错误提示说list对象没有extends这个属性,那我们可以先来看一下list的属性都有什么

    通过第42行,就可以看到list有extend属性,而不是extends属性

    这样就知道代码中的错误是 拼写错误

     1 In [29]: dir(list)                                                              
     2 Out[29]: 
     3 ['__add__',
     4  '__class__',
     5  '__contains__',
     6  '__delattr__',
     7  '__delitem__',
     8  '__dir__',
     9  '__doc__',
    10  '__eq__',
    11  '__format__',
    12  '__ge__',
    13  '__getattribute__',
    14  '__getitem__',
    15  '__gt__',
    16  '__hash__',
    17  '__iadd__',
    18  '__imul__',
    19  '__init__',
    20  '__init_subclass__',
    21  '__iter__',
    22  '__le__',
    23  '__len__',
    24  '__lt__',
    25  '__mul__',
    26  '__ne__',
    27  '__new__',
    28  '__reduce__',
    29  '__reduce_ex__',
    30  '__repr__',
    31  '__reversed__',
    32  '__rmul__',
    33  '__setattr__',
    34  '__setitem__',
    35  '__sizeof__',
    36  '__str__',
    37  '__subclasshook__',
    38  'append',
    39  'clear',
    40  'copy',
    41  'count',
    42  'extend',
    43  'index',
    44  'insert',
    45  'pop',
    46  'remove',
    47  'reverse',
    48  'sort']

    其它几个属性也演示一下吧

    list.append(obj) 追加,是大家都很熟悉的list的属性。注意: 一次只能追加1个对象

    In [33]: c = [2,3]                                                              
    
    In [34]: c.append(4)                                                            
    
    In [35]: c                                                                      
    Out[35]: [2, 3, 4]

    list.clear()清空整个列表

    In [35]: c                                                                      
    Out[35]: [2, 3, 4]
    
    In [36]: c.clear()                                                              
    
    In [37]: c                                                                      
    Out[37]: []

    list.copy()返回一个复制的列表

    In [38]: c = [2,3]                                                              
    
    In [39]: b = c.copy()                                                           
    
    In [40]: b                                                                      
    Out[40]: [2, 3]

    list.count(obj)统计指定元素在列表中出现的次数

    In [45]: c                                                                      
    Out[45]: [2, 3, 2]
    
    In [46]: c.count(2)                                                             
    Out[46]: 2

    list.extend(obj) 将obj追加到list的末尾.注意 obb应该是可迭代的对象,否则会报 TypeError: 'xxx' object is not iterable错误

     1 In [49]: c.extend([5])                                                          
     2 
     3 In [50]: c                                                                      
     4 Out[50]: [2, 3, 2, 5]
     5 
     6 # 如果追加的是1个字典,会把字典的key追加到字典的末尾
     7 In [51]: a={"a":6}                                                              
     8 
     9 In [52]: c.extend(a)                                                            
    10 
    11 In [53]: c                                                                      
    12 Out[53]: [2, 3, 2, 5, 'a']

    错误示例:

     1 In [47]: c                                                                      
     2 Out[47]: [2, 3, 2]
     3 
     4 In [48]: c.extend(5)                                                            
     5 ---------------------------------------------------------------------------
     6 TypeError                                 Traceback (most recent call last)
     7 <ipython-input-48-5a85afdd21bf> in <module>
     8 ----> 1 c.extend(5)
     9 
    10 TypeError: 'int' object is not iterable

    list.index(obj)返回指定元素第1次出现在列表中的位置

    1 In [53]: c                                                                      
    2 Out[53]: [2, 3, 2, 5, 'a']
    3 
    4 In [54]:                                                                        
    5 
    6 In [54]: c.index("a")                                                           
    7 Out[54]: 4

    list.insert(index,obj) 将指定对象插入到列表中指定的位置

    注意 :通过insert方法 ,将obj插入到index的位置后,原来在index位置的元素并不会被覆盖,而是会整体往后移。

    1 In [56]: c                                                                      
    2 Out[56]: [2, 3, 2, 5, 'b']
    3 
    4 In [58]: c.insert(4,"a")                                                        
    5 
    6 In [59]: c                                                                      
    7 Out[59]: [2, 3, 2, 5, 'a', 'b']

    这一点c[3]="c"这种写法是不同的

    像上面这样直接通过 = 给元素附值,会把列表中原来的值覆盖掉

    In [61]: c                                                                      
    Out[61]: [2, 3, 2, 5, 'a', 'b']
    
    In [62]: c.index(5)                                                             
    Out[62]: 3
    
    In [63]: c[3]="c"                                                               
    
    In [64]: c                                                                      
    Out[64]: [2, 3, 2, 'c', 'a', 'b']

    如果指定index超过元素的长度,也不会报错,而是直接将对象插入到列表的末尾,相当于执行了append

     1 In [64]: c                                                                      
     2 Out[64]: [2, 3, 2, 'c', 'a', 'b']
     3 
     4 In [65]: len(c)                                                                 
     5 Out[65]: 6
     6 
     7 In [66]: c.insert(7,"aaa")                                                      
     8 
     9 In [67]: c                                                                      
    10 Out[67]: [2, 3, 2, 'c', 'a', 'b', 'aaa']
    11 
    12 In [68]: c.index("aaa")                                                         
    13 Out[68]: 6

    list.pop(index)从列表中删除指定元素,返回删除的元素,不指定index则会直接删除最后1个元素

     1 In [69]: c                                                                      
     2 Out[69]: [2, 3, 2, 'c', 'a', 'b', 'aaa']
     3 
     4 #删除下标为0的元素
     5 In [70]: d = c.pop(0)                                                           
     6 
     7 In [71]: d                                                                      
     8 Out[71]: 2
     9 
    10 In [72]: c                                                                      
    11 Out[72]: [3, 2, 'c', 'a', 'b', 'aaa']
    12 
    13 #不指定下标,默认删除最后1个元素
    14 In [73]: e= c.pop()                                                             
    15 
    16 In [74]: e                                                                      
    17 Out[74]: 'aaa'

    list.remove(obj)移除列表中 指定的下标元素,无返回值

    1 In [79]: c                                                                      
    2 Out[79]: [3, 2, 'c', 'a', 'b']
    3 
    4 In [80]: c.remove(3)
    5 
    6 In [82]: c                                                                      
    7 Out[82]: [2, 'c', 'a', 'b']

    list.sort()将列表中的内容进行排序,无返回值

    1 In [89]: c                                                                      
    2 Out[89]: ['c', 'a', 'b']
    3 
    4 In [90]: c.sort()                                                               
    5 
    6 In [91]: c                                                                      
    7 Out[91]: ['a', 'b', 'c']

    注意 :使用list.sort()方法,要求list中的元素都是同1数据类型,否则会报 这样的错误 :TypeError: '<' not supported between instances of 'xxx' and 'xxx'

    In [85]: c                                                                      
    Out[85]: [2, 'c', 'a', 'b']
    
    In [86]: c.sort()                                                               
    ---------------------------------------------------------------------------
    TypeError                                 Traceback (most recent call last)
    <ipython-input-86-3b6e9baacecd> in <module>
    ----> 1 c.sort()
    
    TypeError: '<' not supported between instances of 'str' and 'int'



  • 相关阅读:
    最新屏蔽微信举报方法
    C# WIN 生成机器码
    Quartz.net的快速简单上手使用以及防止IIS回收停止Job的处理
    MVC、Web API 请求接口报错“自定义错误模块不能识别此错误。”解决
    获取微信短链接的官方接口
    Window 通过cmd查看端口占用、相应进程、杀死进程
    微信域名检测、防封,微信跳转技术揭秘(二) -- 微信跳转揭秘
    微信域名检测、防封,微信跳转技术揭秘(一) -- 域名检测原理及防封方案
    各种比较方便给力的小工具
    《Git学习指南》学习笔记(三)
  • 原文地址:https://www.cnblogs.com/kaerxifa/p/11077404.html
Copyright © 2011-2022 走看看