zoukankan      html  css  js  c++  java
  • python的list()列表数据类型的方法详解

    一、列表

    列表的特征是中括号括起来的,逗号分隔每个元素,列表中的元素可以是数字或者字符串、列表、布尔值......等等所有类型都能放到列表里面,列表里面可以嵌套列表,可以无限嵌套

    字符串的特征是双引号括起来的

    列表是有序的,是可以被修改的

    S.append  S这个对象调用了list类里面提供的append方法,list中有很多方法,str里面也有很多方法

    li = [1,2,3,4,66,77]   通过list类创建的对象,这个对象叫li
    print (li)
    
    C:python35python3.exe D:/pyproject/day11数据类型的方法/str-way.py
    
    [1, 2, 3, 4, 66, 77] 

    如下列表总共有6个元素,不管多少个嵌套的列表,在列表中的列表都算一个元素

    li = [1, 2, "北约", 'beiye', ['ee',[1, 3, 5], 90], True]
    print(li)
    
    C:python35python3.exe D:/pyproject/day11数据类型的方法/str-way.py
    
    [1, 2, '北约', 'beiye', ['ee', [1, 3, 5], 90], True]

    1.列表通过索引(下标)的方式取值,0代表第一个,1代表第二个,2代表第三个

    li = [1, 2, "北约", 'beiye', ['ee',[1, 3, 5], 90], True]
    print(li[0])
    
    C:python35python3.exe D:/pyproject/day11数据类型的方法/str-way.py
    
    1

    2.列表通过切片的方式取值(中间用:分割),切片的结果也是列表

    li[0:5] 表示大于等于0,小于5这个范围(不包括第五个索引位置)

    li = [1, 2, "北约", 'beiye', ['ee',[1, 3, 5], 90], True]
    print(li[0:5])
    
    C:python35python3.exe D:/pyproject/day11数据类型的方法/str-way.py
    
    [1, 2, '北约', 'beiye', ['ee', [1, 3, 5], 90]]

    3.取值范围是从开头取到倒数第二个值

    li = [1, 2, "北约", 'beiye', ['ee',[1, 3, 5], 90], True]
    print(li[0:-1])
    
    C:python35python3.exe D:/pyproject/day11数据类型的方法/str-way.py
    
    [1, 2, '北约', 'beiye', ['ee', [1, 3, 5], 90]] 

    4.把全部元素都取出来

    li = [1, 2, "北约", 'beiye', ['ee',[1, 3, 5], 90], True]
    print(li[:])
    
    C:python35python3.exe D:/pyproject/day11数据类型的方法/str-way.py
    
    [1, 2, '北约', 'beiye', ['ee', [1, 3, 5], 90], True]

    经过测试发现 列表的索引和切片跟字符串str的使用方法一模一样

    5.用for循环把列表里面的值都取出来

    li = [1, 2, "北约", "beiye", ['ee', [1, 3, 5], 90], True]
    for n in li:
        print(n)
    
    C:python35python3.exe D:/pyproject/day11数据类型的方法/str-way.py
    
    1
    
    2
    
    北约
    
    beiye
    
    ['ee', [1, 3, 5], 90]
    
    True

    6.用while循环把列表里面的值都取出来

    li = [1, 2, "北约", "beiye", ['ee', [1, 3, 5], 90], True]
    while True:
        print(li)
        break
    
    C:python35python3.exe D:/pyproject/day11数据类型的方法/str-way.py
    
    [1, 2, '北约', 'beiye', ['ee', [1, 3, 5], 90], True]

    7.链表的概念

    字符串创建之后是不可以修改的,但是列表这个创建之后就可以被修改,看下图

    方框里面表示是内存的地址,mi这个字符串要想把i改成ai的话,在原来的基础上是修改不了,只能新建一个,因为字符串在内存中是挨着的,列表就不一样了,列表在内存中不是挨着的,但是每个元素在内存中都有一个链表,链表就是红圈内的一个地址,就是因为有它所以系统知道下一个元素所在的位置,如果我新加一个元素的话,只需要修改下对应的链表就可以了,所以列表是创建好之后是可以修改的

    8.既然能修改,我们就来修改下列表中的元素

         通过索引的方式来修改

    li = [1, 2, "北约", "beiye", ['ee', [1, 3, 5], 90], True]
    li[1] = 120
    print (li)
    
    C:python35python3.exe D:/pyproject/day12列表/li-way.py
    
    [1, 120, '北约', 'beiye', ['ee', [1, 3, 5], 90], True]

         把元素改成一个列表试试看

    li = [1, 2, "北约", "beiye", ['ee', [1, 3, 5], 90], True]
    li[1] = [11,22,33]
    print (li)
    
    C:python35python3.exe D:/pyproject/day12列表/li-way.py
    
    [1, [11, 22, 33], '北约', 'beiye', ['ee', [1, 3, 5], 90], True]

          通过切片的方式修改列表中的元素

    li = [1, 2, "北约", "beiye", ['ee', [1, 3, 5], 90], True]
    li[1:3] = [20, 30]
    print(li)
    
    C:python35python3.exe D:/pyproject/day12列表/li-way.py
    
    [1, 20, 30, 'beiye', ['ee', [1, 3, 5], 90], True]

    9.del  加上列表的元素的索引的位置 就可以删除元素了,这是删除元素的第一种方式

    li = [1, 2, "北约", "beiye", ['ee', [1, 3, 5], 90], True]
    del li[1]
    print (li)
    
    C:python35python3.exe D:/pyproject/day12列表/li-way.py
    
    [1, '北约', 'beiye', ['ee', [1, 3, 5], 90], True] 

               通过切片的方式删除指定的范围内的元素,这是删除元素的第二种方法

    li = [1, 2, "北约", "beiye", ['ee', [1, 3, 5], 90], True]
    del li[2:5]
    print(li)
    
    C:python35python3.exe D:/pyproject/day12列表/li-way.py
    
    [1, 2, True]

    10.通过in操作 判断字符串或者是数字是否在列表元素里面,在里面则为True,不在里面就为假

    li = [1, 2, "北约", "beiye", ['ee', [1, 3, 5], 90], True]
    v = 2 in li
    print(v)
    
    C:python35python3.exe D:/pyproject/day12列表/li-way.py
    
    True
    li = [1, 2, "北约", "beiye", ['ee', [1, 3, 5], 90], True]
    v = 200 in li
    print(v)
    
    C:python35python3.exe D:/pyproject/day12列表/li-way.py
    
    False

    11.如何取列表元素里面的嵌套的列表中的元素,最终取到5这个元素

            先取出列表中的列表

    li = [1, 2, "北约", "beiye", ['ee', [1, 3, 5], 90], True]
    S = li[4]
    print (S)
    
    C:python35python3.exe D:/pyproject/day12列表/li-way.py
    
    ['ee', [1, 3, 5], 90]

    取到列表之后在继续往下面取,看上面的结果,5在这个列表中的第一个元素里面,ee为第第0个元素,所以我们下次取就是

    li = [1, 2, "北约", "beiye", ['ee', [1, 3, 5], 90], True]
    S = li[4][1]
    print (S)
    
    C:python35python3.exe D:/pyproject/day12列表/li-way.py
    
    [1, 3, 5]

    现在取到这里了,只剩下一个列表了,5这个元素是第二个元素,所以连接起来一起取就是

    li = [1, 2, "北约", "beiye", ['ee', [1, 3, 5], 90], True]
    S = li[4][1][2]
    print (S)
    
    C:python35python3.exe D:/pyproject/day12列表/li-way.py
    
    5

    12.把字符串转换成列表应该怎么转换,各种相互转换

    str 字符串

    int 数字

    list 列表

    我们之前把数字转换成字符串是这样写 S = str(a)  a是数字,S是转换成的结果

    我们之前把字符串换成数字是这样写   S = int(a)  a是字符串,S是转换成的结果

    把字符串换成列表就是               S = list(a)  a是字符串,S是转换成的结果

    a = "gouguoqi"
    S = list(a)
    print (S)
    
    C:python35python3.exe D:/pyproject/day12列表/li-way.py
    
    ['g', 'o', 'u', 'g', 'u', 'o', 'q', 'i'

    也可以这样写

    S = list("gouguoqi")
    print(S)
    
    C:python35python3.exe D:/pyproject/day12列表/li-way.py
    
    ['g', 'o', 'u', 'g', 'u', 'o', 'q', 'i']

    如果a是一个数字,就不能转换成列表了,因为数字也不能被for循环

    a = 123
    S= list(a)
    print (S
    
    TypeError: 'int' object is not iterabl  数字对象不是可迭代的 
    a = 123
    for n in a:
        print (n)
    
    TypeError: 'int' object is not iterabl   数字对象不是可迭代的

    13.把列表转换成字符串该怎么转换

    S = [1, 2, "北约", "beiye", ['ee', [1, 3, 5], 90], True]
    a = str(S)
    print (type(a),a)
    
    C:python35python3.exe D:/pyproject/day12列表/li-way.py
    
    <class 'str'> [1, 2, '北约', 'beiye', ['ee', [1, 3, 5], 90], True]

    虽然现在是字符串的类型了。但是这个结果不是我们想要,我们是想要这些字符串拼接起来

    只能自己写个for循环了

     (1)第一种方法,自己写for循环,一个一个的循环,因为元素中既有数字,又有字母,所以得定义一个空,然后循环的时候转换成str类型,才能进行相加,一个一个的循环,最    后把a打印出来

    S = [1, 2, "北约", "beiye", "gouguoqi", True]
    a = ""
    for n in S:
        b = str(n)
        a = a + b        a+=b
    print (a)
    
    C:python35python3.exe D:/pyproject/day12列表/li-way.py
    
    12北约beiyegouguoqiTrue

      (2)第二种方法,前提是列表元素里面的元素都是字符串,可以用join的方法

    S = [ "北约", "beiye", "gouguoqi"]
    v = "".join(S)
    print (v)
    
    C:python35python3.exe D:/pyproject/day12列表/li-way.py
    
    北约beiyegouguoqi

    二、list的方法

    (list是一个list类,li是list类的一个对象)  li = [111,22,33,,44,55,66]

    1. append(self, p_object)   英文意思就是  追加

    p_object这个我们称之为 参数 (self可以忽略)

    list类的append方法,得传一个参数才可以使用

    这个方法的的作用就是在列表的末尾追加一个元素

    为什么不能像字符串那样把结果赋值为一个新的变量呢,因为之前不是说过了

    字符串是不可以被修改的,只能赋值给一个新的变量,而列表是可以被修改的,所以可以直接进行修改,不用赋值到新的变量

    S = ["北约", "beiye", "gouguoqi"]
    v = S.append("miaoye")
    print(v)
    print(S)
    
    C:python35python3.exe D:/pyproject/day12列表/list-way.py
    
    None
    
    ['北约', 'beiye', 'gouguoqi', 'miaoye']

    也可以追加多次,也可以追加数字,可以追加字符串,可以追加列表

    S = ["beiye", "gouguoqi"]
    S.append("miaoye")
    S.append(66)
    S.append([11,22,33])
    print(S)
    
    C:python35python3.exe D:/pyproject/day12列表/list-way.py
    
    ['beiye', 'gouguoqi', 'miaoye', 66, [11, 22, 33]]
    2. clear(self)

    L.clear() -> None -- remove all items from L

    把列表元素清空
    L = ["beiye", "gouguoqi"]
    L.clear()
    print (L)
    
    C:python35python3.exe D:/pyproject/day12列表/list-way.py
    
    []
    3. copy(self)  拷贝,浅拷贝

    L.copy() -> list -- a shallow copy of L      shallow  [ˈʃæləʊ] 浅

    拷贝一个一模一样的列表出来

    L = ["beiye", "gouguoqi"]
    a =  L.copy()
    print (L)
    print (a)
    
    C:python35python3.exe D:/pyproject/day12列表/list-way.py
    
    ['beiye', 'gouguoqi']
    
    ['beiye', 'gouguoqi']
    4. count(self, value)   计数
    计算一个指定的元素在列表里面出现了几次

    L.count(value) -> integer -- return number of occurrences of value

    计算'66'这个字符串在列表元素中出现了几次

    L = ["11","22","33","222",22,22,22]
    v = L.count('66')
    print (v)
    
    C:python35python3.exe D:/pyproject/day12列表/list-way.py
    
    0

    计算'22'这个字符串在列表元素里面出现了几次

    L = ["11","22","33","222",22,22,22]
    v = L.count('22')
    print (v)
    
    C:python35python3.exe D:/pyproject/day12列表/list-way.py
    
    1

    计算22这个数字在列表元素里面出现了几次

    L = ["11","22","33","222",22,22,22]
    v = L.count(22)
    print (v)
    
    C:python35python3.exe D:/pyproject/day12列表/list-way.py
    
    3
    5. extend(self, iterable) 扩展

    iterable 可迭代的,就是这个extend这方法的参数必须是可以迭代的才行(数字就不能迭代)

    目前知道的 字符串可以迭代  列表可以迭代,元组也能迭代

    L.extend(iterable) -> None -- extend list by appending elements from the iterable

    把我们的的参数,在python内部通过for循环的方式,增加到原来的列表的末尾,作为n个新的元素增加到原来的列表里面,参数必须是可迭代的

    而append则是把我们的参数当成是一个整体放到列表的末尾

    L = ["11","22","33"]
    L.extend(["44","55","66"])  相当于for i in ["44","55","66"]  L.append((i))
    print (L)
    
    C:python35python3.exe D:/pyproject/day12列表/list-way.py
    
    ['11', '22', '33', '44', '55', '66'

    append追加的是一个整体

    L = ["11","22","33"]
    L.append(["44","55","66"])
    print (L)
    
    C:python35python3.exe D:/pyproject/day12列表/list-way.py
    
    ['11', '22', '33', ['44', '55', '66']]

    如果extend的参数是一个字符串呢,我们看一下

    L = ["11","22","33"]
    L.extend("woai")           相当于for i in "woai"  L.append((i))
    print (L)
    
    C:python35python3.exe D:/pyproject/day12列表/list-way.py
    
    ['11', '22', '33', 'w', 'o', 'a', 'i']

    如果extend的参数是一个元组呢,我们在看一下(黄色部分就是一个元组)

    L = [11,22,"gouguoqi","aa"]
    L.extend(("55",66,))
    print (L)
    
    C:python35python3.exe D:/pyproject/day12列表/tuple.py
    
    [11, 22, 'gouguoqi', 'aa', '55', 66] 

    因为数字不是可迭代的,所以不行

    L = ["11","22","33"]
    L.extend(123456)
    print (L
    
    TypeError: 'int' object is not iterable
    6. index(self, value, start=None, stop=None)

    L.index(value, [start, [stop]]) -> integer -- return first index of value.
    Raises ValueError if the value is not present

    寻找指定的元素在列表的索引(下标)位置,找到第一个之后就不找了,可以指定寻找范围,如果找不到程序就报错了,跟字符串中的index方法类似,但是字符串中有find方法,找不到结果为-1,不知道列表为啥没有find方法

    L = ["11","55","22","33","55","gouguoqi"]
    v = L.index("55")
    print (v)
    
    C:python35python3.exe D:/pyproject/day12列表/list-way.py
    
    1
    
     
    
    L = ["11","55","22","33","55","gouguoqi"]
    v = L.index("555")
    print (v)
    
    ValueError: '555' is not in list 
    7. insert(self, index, p_object)

    L.insert(index, object) -- insert object before index      index 索引,下标

    必须指定2个参数 一个是index 一个是  object

    在指定的索引之前插入你指定的参数作为列表的元素

    L = ["11","55","gouguoqi"]
    L.insert(2,"heihei")
    print (L)
    
    C:python35python3.exe D:/pyproject/day12列表/list-way.py
    
    ['11', '55', 'heihei', 'gouguoqi'
    8. pop(self, index=None) 这是删除元素的第三种方法,前面2种是del  索引   del li[1]
    del 切片   del li[2:5]

    L.pop([index]) -> item -- remove and return item at index (default last).
    Raises IndexError if list is empty or index is out of range.

    删除指定索引(下标)位置的元素,不加参数的话,默认删除最后一个元素

    删除索引位置为1的元素

    L = ["11","55","gouguoqi","22",66]
    L.pop(1)
    print (L)
    
    C:python35python3.exe D:/pyproject/day12列表/list-way.py
    
    ['11', 'gouguoqi', '22', 66]

    删除倒数第二个元素

    L = ["11","55","gouguoqi","22",66]
    L.pop(-2)
    print (L)
    
    C:python35python3.exe D:/pyproject/day12列表/list-way.py
    
    ['11', '55', 'gouguoqi', 66]

    不加参数,默认是删除最后一个元素

    L = ["11","55","gouguoqi","22",66]
    L.pop()
    print (L)
    
    C:python35python3.exe D:/pyproject/day12列表/list-way.py
    
    ['11', '55', 'gouguoqi', '22']

    还能获取删除的值

    L = ["11","55","gouguoqi","22",66]
    v = L.pop(2)
    print (v)
    
    C:python35python3.exe D:/pyproject/day12列表/list-way.py
    
    gouguoqi
    9. remove(self, value) 这是删除元素的第四种方法,前面3种方法
    del 索引  del li[1]
    del 切片  del li[2:5]
    pop方法

    删除指定的一个元素,删除第一个之后,就不再继续往后找了

    L.remove(value) -> None -- remove first occurrence of value.
    Raises ValueError if the value is not present.

    L = ["11", "55", "gouguoqi", "55", "22", 66]
    L.remove("55")
    print(L)
    
    C:python35python3.exe D:/pyproject/day12列表/list-way.py
    
    ['11', 'gouguoqi', '55', '22', 66]
    10、reverse(self)   [rɪˈvɜ:s]   颠倒,反转
    把列表的元素重新进行倒序排列
    L = [1,2,3,4,5,6,7,8]
    L.reverse()
    print (L)
    
    C:python35python3.exe D:/pyproject/day12列表/list-way.py
    
    [8, 7, 6, 5, 4, 3, 2, 1]
    11. sort(self, key=None, reverse=False)  排序
    不指定参数默认是升序排列

    默认升序排列

    L = ["www","taobao","china","abc"]
    L.sort()
    print(L)
    
    C:python35python3.exe D:/pyproject/day12列表/list-way.py
    
    ['abc', 'china', 'taobao', 'www']

    降序排列

    L = ["www","taobao","china","abc"]
    L.sort(reverse=True)
    print(L)
    
    C:python35python3.exe D:/pyproject/day12列表/list-way.py
    
    ['www', 'taobao', 'china', 'abc']

    12.列表里面的in操作,判断元素是否在列表里面

    L = [11,22,33,55,66]
    v = 33 in L
    print (v)
    
    C:python35python3.exe D:/pyproject/day12列表/dict-way.py
    
    True
  • 相关阅读:
    VS2010 LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 的解决方法
    Navicat Premium11.0.16 for mac 中文破解版
    angular input输入框中使用filter格式化日期
    Mac下搭建Eclipse Android开发环境
    mac下修改.bash_profile立即生效的方法
    Ionic ngMessage 表单验证
    mongodb授权登录
    Ionic开发之条形码扫描
    ionic 到真相后$http.get()无法请求,导致空白的情况,如何解决
    Xcode 7中http通信出现如下错误:Application Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.
  • 原文地址:https://www.cnblogs.com/gouguoqilinux/p/9114512.html
Copyright © 2011-2022 走看看