zoukankan      html  css  js  c++  java
  • 列表方法

    #方法是与对象有紧密联系的函数,对象可能是列表、数字,也可能是字符串或其他类型的对象。方法的调用方式前面有一个示例,调用语法如下:
        对象.方法(参数)
    #由上面的语法和前面append()方法的示例可知:方法的定义方式是将对象放到方法名之前,两者之前用一个点号隔开,方法后面的括号中可以根据需要带上参数。除了语法上有一些不同,方法调用和函数调用很相似。
     
    #列表中有count、index、sort等比较常用的方法,下面逐一进行介绍。
     
    1、append
    1 #该方法前面已经介绍过,功能是在列表的末尾添加新对象。
    2 #使用方式为:
    3 >>>list.append(obj)
    2、count

     1 #count()方法用于统计某个元素在列表中出现的次数。
     2 #count()方法的语法如下:
     3 >>>list.count(obj)
     4 #此语法中list代表列表,obj代表列表中统计的对象。
     5 #示例如下
     6 >>> field=list('hello,world')
     7 >>> field
     8 ['h', 'e', 'l', 'l', 'o', ',', 'w', 'o', 'r', 'l', 'd']
     9 >>> print('列表field中,字母o的个数:',field.count('o'))
    10 列表field中,字母o的个数: 2
    11 >>> linxuyue=list('xiaotao')
    12 >>> print('列表linxuyue中,字母o的个数为:',linxuyue.count('o'))
    13 列表linxuyue中,字母o的个数为: 2
    14 
    15 >>> listobj=[26,'hello','world',26]
    16 >>> listobj
    17 [26, 'hello', 'world', 26]
    18 >>> print('数字26的个数为:',listobj.count('26'))
    19 数字26的个数为: 0
    20 >>> print('数字26的个数为:',listobj.count(26))
    21 数字26的个数为: 2
    22 #此处需要注意的是数值型的不需要加单引号。
    23 >>> print('hello的个数为:',listobj.count('hello'))
    24 hello的个数为: 1
    25 >>> listobj.count(26)
    26 2
    27 >>> min=[1,3],5,6,[1,3],2
    28 >>> min
    29 ([1, 3], 5, 6, [1, 3], 2)
    30 >>> print('嵌套列表min中列表[1,3]的个数为:',min.count([1,3]))
    31 嵌套列表min中列表[1,3]的个数为: 2
    32 >>> print('嵌套列表min中5的个数为:',min.count(5))
    33 嵌套列表min中5的个数为: 1
    34 >>> print('嵌套列表min中1的个数为:',min.count(1))
    35 嵌套列表min中1的个数为: 0
    36 >>> min.count([1])
    37 0
    3、extend
     1 #extend()方法用于在列表末尾一次性追加另一个序列中的多个值(用新的列表扩展原来的列表。)
     2 extend()方法的语法如下:
     3 >>>list.extend(seq)
     4 #此语法中list代表列表,seq代表元素列表。
     5 >>> a=['hello','world']
     6 >>> b=['python','is','funny']
     7 >>> a.extend(b)
     8 >>> a
     9 ['hello', 'world', 'python', 'is', 'funny']
    10 #以上操作结果看起来很像连接操作。extend()方法和序列相加有什么区别?
    11 >>> a=['hello','world']
    12 >>> b=['python','is','funny']
    13 >>> a+b
    14 ['hello', 'world', 'python', 'is', 'funny']
    15 >>> a
    16 ['hello', 'world']
    17 #从输出的结果可以看出,两个示例中的a和b赋值都是一样的,但第一个示例中输出a的值和第二个示例中输出a的值是不一样的。
    18 #由此我们得出,extend()方法和序列相加的主要区别是:extend()方法修改了被扩展的序列,如前面的a;原始连接操作会返回一个全新的列表,如上面的示例,返回的是一个包含a和b副本的新列表,而不会修改原始的变量。
    19 #当然,也可以用前面学习的分片赋值实现相同的结果,如下:
    20 >>> a=['hello','world']
    21 >>> b=['python','is','funny']
    22 >>> len(a:)
    23 >>> a[len(a):]=b
    24 >>> a
    25 ['hello', 'world', 'python', 'is', 'funny']
    26 #可以看到,输出结果和使用extend()方法一样,不过看起来没有exteng()方法易懂,因此不会选择这个方案。
    4、index
     1 #index()方法用于从列表中找出某个值第一个匹配项的索引位置。
     2 #index()方法的语法如下:
     3 >>>list.index(obj)
     4 #此语法中list代表列表,obj代表查找的对象。
     5 #示例如下:
     6 >>> 袁威=['2017','','','','','']
     7 >>> print('工的索引位置为:',袁威.index(''))
     8 工的索引位置为: 3
     9 >>> 袁威.index(2017)
    10 Traceback (most recent call last):
    11   File "<pyshell#39>", line 1, in <module>
    12     袁威.index(2017)
    13 ValueError: 2017 is not in list
    14 >>> 袁威.index('2017')
    15 0
    16 >>> 袁威.index('')
    17 2
    18 >>> 
    19 由上面的示例看到,搜索文字‘工’,会发现它在索引号为3的位置;索引数字2017会提示2017不在列表中,加上引号才会正确索引出‘2017’的索引位置。
    5、insert
     1 #insert()方法用于从列表中找出某个值第一个匹配项的索引位置。
     2 #insert()方法的语法如下:
     3 >>>list.insert(index,obj)
     4 #此语法中list()代表列表,index代表对象obj需要插入的索引位置,obj代表要插入列表中的对象。
     5 #示例如下:
     6 >>> numbers=[1,2,3]
     7 >>> print('插入之前的num:',numbers)
     8 插入之前的num: [1, 2, 3]
     9 >>> numbers.insert(2,'插入位置在2之后,3之前')
    10 >>> print('插入之后的num:',numbers)
    11 插入之后的num: [1, 2, '插入位置在2之后,3之前', 3]
    12 >>> numbers
    13 [1, 2, '插入位置在2之后,3之前', 3]
    14 #由上面的示例看到,insert方法操作挺方便的。
    15 #与extend()方法一样,insert()方法的操作也可以使用我们前面学习的分片赋值实现。
    16 >>> numbers=[1,2,3]
    17 >>> print('插入之前的numbers:',numbers)
    18 插入之前的numbers: [1, 2, 3]
    19 >>> print('插入之后的numbers:',numbers)
    20 插入之后的numbers: [1, 2, '插入位置在2之后,3之前']
    21 #输出结果和insert操作的结果一样,但看起了没有使用insert容易理解。
    6、pop
     1 #pop()方法用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。
     2 #pop()方法的语法如下:
     3 >>>list.pop(obj=list[-1])
     4 #此语法中list代表列表,obj为可选择的参数,代表要移除列表元素的对象。
     5 #示例如下:
     6 >>> 袁威=['2','0','1','7','','','','','']
     7 >>> 袁威.pop()       #不带参数,默认移除最后一个元素
     8 ''
     9 >>> print('移除元素后的袁威:',袁威)
    10 移除元素后的袁威: ['2', '0', '1', '7', '', '', '', '']
    11 >>> 袁威.pop(2)     #移除编号为2的元素
    12 '1'
    13 >>> print('移除元素编号为2的袁威:',袁威)
    14 移除元素编号为2的袁威: ['2', '0', '7', '', '', '', '']
    15 >>> 袁威.pop(0)
    16 '2'
    17 >>> print('移除元素编号为0后的袁威:',袁威)
    18 移除元素编号为0后的袁威: ['0', '7', '', '', '', '']
    19 #由示例可知,移除‘室’时未带参数,默认移除最后一个,‘1’和‘2’的移除是根据输入的编号参数进行的。
    20 #pop方法是唯一一个既能修改列表又能返回元素值(除了None)的列表方法。
    21 #使用pop方法可以实现一种常见的数据结构--栈。
    22 #栈的原理就像堆放盘子一样,一次操作一个盘子,要将若干盘子堆成一堆,只能在一个盘子上面放另一个盘子;要拿盘子时,只能从顶部一个一个往下拿,最后放入的盘子是最先被拿的。栈也是这样,最后放入栈的最先被移除,称为LIFO(Last In First Out),即后进先出。
    23 #栈中的放入和移除操作有统一的称谓--入栈(push)和出栈(pop)。Pyhton没有入栈方法,但可以使用append方法代替。pop方法和append方法的操作结果恰好相反,如果入栈(或追加)刚刚出栈的值,最后得到的结果就不会变,示例如下:
    24 >>> numbers=[1,2,3]
    25 >>> numbers.append(numbers.pop())   #追加默认出栈的值
    26 >>> print('numbers追加默认出栈值的操作结果是:',numbers)
    27 numbers追加默认出栈值的操作结果是: [1, 2, 3]
    28 #由上面的操作结果看到,通过追加默认出栈的值得到的列表和原来是一样的。

    7、remove

     1 #remove()方法用于移除列表中某个值的第一个匹配项。
     2  #remove()方法的语法如下:
     3 >>>list.remove(obj)
     4 #此语法中list中代表列表,obj为列表中要移除的对象。
     5 #示例如下:
     6 target=['2017','袁威','2017','铿锵','工作室','铿锵工作室','袁威']
     7 >>> print('移除前的列表target',target)
     8 移除前的列表target: ['2017', '袁威', '2017', '铿锵', '工作室', '铿锵工作室', '袁威']
     9 >>> target.remove(2017)
    10 Traceback (most recent call last):
    11   File "<pyshell#101>", line 1, in <module>
    12     target.remove(2017)
    13 ValueError: list.remove(x): x not in list
    14 >>> target.remove('2017')
    15 >>> print('移除后的列表target',target)
    16 移除后的列表target ['袁威', '2017', '铿锵', '工作室', '铿锵工作室', '袁威']
    17 >>> target.remove()
    18 Traceback (most recent call last):
    19   File "<pyshell#104>", line 1, in <module>
    20     target.remove()
    21 TypeError: remove() takes exactly one argument (0 given)
    22 #由上面的输出结果看到,只有第一次出现的值被移除了,第二次出现的值没有被移除。并且remove()括号里必须得加上参数,否则会报错。同时,操作移除列表中不存在的值也是不行的,系统会告知移除对象不在列表中。
    23 #需要了解的是,remove是一个没有返回值的原位置元素变更方法,它修改了列表却没有返回值,与pop方法正好相反。
    24 >>> numbers=[1,2,3]
    25 >>> print(numbers.remove(2))
    26 None
    8、reverse
     1 reverse()方法用于反向列表中的元素。
     2 >>> #reverse()方法的语法如下:
     3 >>> list.reverse()
     4 #此语法中list代表列表,该方法不需要传入参数。
     5 #示例如下:
     6 >>> target=['肖涛','林徐悦','陈安']
     7 >>> print('列表反转前target:',target)
     8 列表反转前target: ['肖涛', '林徐悦', '陈安']
     9 >>> target.reverse()
    10 >>> print('列表反转后target:',target)
    11 列表反转后target: ['陈安', '林徐悦', '肖涛']
    12 #由上面的输出结果看到,该方法改变了列表但不返回值(和前面的remove一样)。
    13 #如果需要对一个序列进行反向迭代,那么可以使用reversed函数,这个函数并不返回列表,而是返回一个迭代器(Iterator)对象,可以通过list函数把返回的对象转换为列表,例如:
    14 >>> target=['肖涛', '林徐悦', '陈安']
    15 >>> print('使用reversed函数反转结果:',list(reversed(target)))
    16 使用reversed函数反转结果: ['陈安', '林徐悦', '肖涛']
    17 #输出结果对原序列反向迭代了。
    9、sort
     1 #sort()方法用于对原列表进行排序,如果指定参数,就使用参数指定的比较方法进行排序。
     2 #sort()方法的语法如下:
     3 >>> list.sort(func)
     4 #此语法中list代表列表,func为可选参数。如果指定参数,就会使用该参数的方法进行排序。
     5 #示例如下:
     6 >>> numbers=[6,3,4,7,8,3,7,465,83,]
     7 >>> numbers.sort()
     8 >>> print('numbers调用sort后:',numbers)
     9 numbers调用sort后: [3, 3, 4, 6, 7, 7, 8, 83, 465]
    10 >>> numbers
    11 [3, 3, 4, 6, 7, 7, 8, 83, 465]
    12 #由上面输出的结果得知,sort方法改变了原来的列表,而不是简单的返回一个已排序的列表副本。
    13 #我们前面学习过几个边改变列表却不返回值的方法(如append),不能将操作结果赋给一个变量,这样的行为方式很合常理,但当用户需要一个排好序的列表副本,同时又保留原有列表不变时,可以如下操作:
    14 >>> numbers=[5,3,6,78,234,2,4]
    15 >>> n=numbers.sort()
    16 >>> print('变量n的结果是:',n)
    17 变量n的结果是: None
    18 >>> print('列表numbers排序后的结果是:',numbers)
    19 列表numbers排序后的结果是: [2, 3, 4, 5, 6, 78, 234]
    20 #输出结果和我们预期的不一样,因为sort方法修改了列表numbers,但是返回的是空值,所以我们最后得到的是已排序的numbers和值为None的n。该想法正确的实现方式是先把numbers的副本赋值给n,然后对n进行排序,操作如下:
    21 >>> numbers=[5,3,6,78,234,2,4]
    22 >>> n=numbers
    23 >>> n.sort()
    24 >>> print('变量n的结果是:',n)
    25 变量n的结果是: [2, 3, 4, 5, 6, 78, 234]
    26 >>> print('numbers的结果是:',numbers)
    27 numbers的结果是: [2, 3, 4, 5, 6, 78, 234]            #numbers的也被排序了
    28 >>> numbers=[5,3,6,78,234,2,4]
    29 >>> n=numbers[:]              #将列表numbers切片后赋值给n
    30 >>> n.sort()
    31 >>> print('变量n的结果是:',n)
    32 变量n的结果是: [2, 3, 4, 5, 6, 78, 234]
    33 >>> print('numbers的结果是:',numbers)
    34 numbers的结果是: [5, 3, 6, 78, 234, 2, 4]       #numbers保持原样
    35 #执行结果和前面操作的一样。sorted函数可以用于任何序列,返回结果都是一个列表。示例如下:
    36 >>> number=[23,53,1,6]
    37 >>> number.sorted()
    38 Traceback (most recent call last):
    39   File "<pyshell#157>", line 1, in <module>
    40     number.sorted()
    41 AttributeError: 'list' object has no attribute 'sorted'
    42 >>> sorted(number)
    43 [1, 6, 23, 53]
    44 >>> sorted('number')
    45 ['b', 'e', 'm', 'n', 'r', 'u']
    46 >>> target=['肖涛', '林徐悦', '袁威','陈安']
    47 >>> sorted(target)
    48 ['林徐悦', '肖涛', '袁威', '陈安']
    49 >>> target.sort()
    50 >>> print(target)
    51 ['林徐悦', '肖涛', '袁威', '陈安']
    52 >>> target
    53 ['林徐悦', '肖涛', '袁威', '陈安']

    10、clear

     1 #clear()方法用于清空列表,类似于 del a[:]
     2 #clear()语法如下:
     3 >>> list.clear()
     4 #此列表代表列表,不需要传入参数。
     5 #示例如下:
     6 >>> target=['陈安','林徐悦','肖涛']
     7 >>> target.clear()
     8 >>> print('taget调用clear方法后的结果为:',target)
     9 target调用clear方法后的结果为: []
    10 #由操作结果看到,clear方法会清空整个列表,调用该方法进行清空很简单,但操作须谨慎。
    11、copy
     1 #copy()方法用于复制列表,类似于a[:]。
     2 #copy()方法的语法如下:
     3 >>> list.copy()
     4 #此语法中list代表列表,不需要传入参数。
     5 #示例如下:
     6 >>> target=['陈安','林徐悦','肖涛']
     7 >>> target_1=target.copy()
     8 >>> print('复制操作结果:',target_1)
     9 复制操作结果: ['陈安', '林徐悦', '肖涛']
    10 #由输出结果可知,copy()方法把整个target列表复制到了target_1.

     12、高级排序

     1 #如果希望元素能按特定方式进行排序(不是sort方法默认的按升序排列元素),就可以自定义比较方法。
     2 #sort方法有两个可选参数,即key何reverse。要使用他们,就要通过名字指定,我们称之为关键字参数。
     3 #示例如下:
     4 >>> target=['study','python','is','hayyp']
     5 >>> target.sort(key=len)                     #按字符串由短到长排序
     6 >>> target
     7 ['is', 'study', 'hayyp', 'python']
     8 >>> target.sort(key=len,reverse=True) #按字符串由长到短排序,传递两个参数
     9 >>> target
    10 ['python', 'study', 'hayyp', 'is']
    11 >>> numbers=[5,2,7,2,4]
    12 >>> numbers.sort(reverse=True)        #排序后逆序(反转)
    13 >>> numbers
    14 [7, 5, 4, 2, 2]
    15 #由上面的操作结果可知,sort方法带上参数后的操作是很灵活的,可以根号自己的需要使用该方法。(自定义函数)

    end

  • 相关阅读:
    生成微博授权URL及回调地址
    微博三方登录
    celery异步发送短信
    celery配置
    celery原理与组件
    Django----短信验证接口
    Django----图片验证码接口
    编写注册接口
    jwt安装配置
    day19-Exception
  • 原文地址:https://www.cnblogs.com/DLHe/p/7685609.html
Copyright © 2011-2022 走看看