zoukankan      html  css  js  c++  java
  • python---[列表]lsit

    内置数据结构(变量类型)

      -list

      -set

      -dict

      -tuple

        -list(列表)

          -一组又顺序的数据组合

          -创建列表

            -空列表

            list1 = []
            print(type(list1))
            print(list1)

            list2 = [100]
            print(type(list2))
            print(list2)

            list3 = [2, 3, 1, 4, 6, 5, 6]
            print(type(list3))
            print(list3)

            list4 = list()
            print(type(list4))
            print(list4)


            运行结果:
            <class 'list'>
            []
            <class 'list'>
            [100]
            <class 'list'>
            [2, 3, 1, 4, 6, 5, 6]
            <class 'list'>
            []

        -列表常用操作

          -访问

            -使用下表操作

            -列表的位置是从0开始

            list1 = [2, 3, 1, 4, 6, 5, 6]
            print(list1[3])

            print(list1[0])

            

            运行结果:

            4

            2

        -分片操作

        -注意截取的范围, 包含左边的下标值,不包含右边的下标值

        -下标值可以为空,如果不写左边下标值默认为0,右边下标值最大数加一,即表示截取最后一个数据

          list1 = [2, 3, 1, 4, 6, 5, 6]
          print(list1[:])
          print(list1[:4])
          print(list1[3:])

          运行结果:

          [2, 3, 1, 4, 6, 5, 6]
          [2, 3, 1, 4]
          [4, 6, 5, 6]

          

          -分片可以控制增长幅度,默认增长幅度为1

          list1 = [2, 3, 1, 4, 6, 5, 6]
          print(list1[:])
          print(list1[1:6:1])
          print(list1[1:6:2])

          运行结果:

          [2, 3, 1, 4, 6, 5, 6]
          [3, 1, 4, 6, 5]
          [3, 4, 5]

          

          -下标可以超出范围,超出后不在考虑多余下表内容

          list1 = [2, 3, 1, 4, 6, 5, 6]
          print(list1[2:10])

          运行结果:

          [1, 4, 6, 5, 6]

          -下标值, 增长幅度可以为负数

          -为负数,表明顺序是从右往左

          -规定:数组最后一个数字的下标是-1

          

          -分片之负数下标

          -默认分片总是从左往右截取

          -即正常情况,分片左边的值一定小于右边的值

          list1 = [2, 3, 1, 4, 6, 5, 7]
          print(list1[-2:-4])
          print(list1[-4:-2])
          print(list1[-2:-4:-1])
          print(list1[-3:-5:-1])

          运行结果:

          []
          [4, 6]
          [5, 6]
          [6, 4]

          -分片操作是生成要给新的list

            -内置函数id,负责显示一个变量或者数据的唯一确定编号

            a = 100
            b = 200
            print(id(a))
            print(id(b))
            c = a
            print(id(c))

            运行结果:

            1967290496
            1967293696
            1967290496
            100

            -通过id可以直接判断出分片是从新生成了一份数据还是使用的同一份数据

            

            -如果两个id之一样,则表明分片产生的列表是使用的同一地址同一份数据

            -否则,则表明分片是重新生成了一份数据,即一个新的列表,然后把数据拷贝到新列表中

              -通过id知道,list2和list3是同一份数据,验证代码如下:

              list1 = [2, 3, 1, 4, 6, 5, 7]
              list2 = list1[:]
              list3 = list2
              print(id(list1))
              print(id(list2))
              print(id(list3))

              list1[0] = 100
              print(list1)
              print(list2)
              list2[1] = 100
              print(list2)
              print(list3)

              运行结果:

              2252262765960
              2252261913544
              2252261913544
              [100, 3, 1, 4, 6, 5, 7]
              [2, 3, 1, 4, 6, 5, 7]
              [2, 100, 1, 4, 6, 5, 7]
              [2, 100, 1, 4, 6, 5, 7]

    - List(列表)

     1  1 # del删除
     2  2 # 如果使用del之后, id的值和删除钱不一样, 则说明删除生成一个新的list
     3  3 b = [1, 2, 3, 4, 5, 6]
     4  4 print(id(b))
     5  5 del b[2]
     6  6 print(id(b))
     7  7 print(b)
     8  8 # del 一个变量之后不能在继续使用此变量
     9  9 del b
    10 10 print(b)
    11 
    12 运行结果:
    13 2429916837256
    14 2429916837256
    15 [1, 2, 4, 5, 6]
    16 NameError: name 'b' is not defined
    del删除命令
     1 # 列表相加
     2 # 使用加号连接两个列表
     3 a = [1, 2, 3, 4]
     4 b = [5, 6, 7, 8, 9]
     5 c = ['a', 'b', 'c']
     6 d = a + b + c
     7 print(d)
     8 
     9 运行结果:
    10 [1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'b', 'c']
    View Code
    1 # 使用乘号操作列表
    2 # 列表直接跟一个整数相乘
    3 # 相当于把n个列表连接在一起
    4 a = [1, 2, 3, 4]
    5 b = a * 3
    6 print(b)
    7 
    8 运行结果:
    9 [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
    list相乘
     1 # 成员资格运算
     2 # 就是判断一个元素是否在list里面
     3 a = [1, 2, 3, 4, 5, 6, 7]
     4 b = 8
     5 c = 5
     6 # 返回一个布尔值
     7 print(b in a)
     8 print(c in a)
     9 运行结果:
    10 False
    11 True
    资格运算
     1 # 成员资格运算
     2 # 就是判断一个元素是否在list里面
     3 a = [1, 2, 3, 4, 5, 6, 7]
     4 b = 8
     5 c = 5
     6 # 返回一个布尔值
     7 print(b in a)
     8 print(c in a)
     9 print(c not in a)
    10 
    11 运行结果:
    12 [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
    13 False
    14 True
    15 False
    资格运算
     1 # for i in list
     2 a = [1, 2, 3, 4, 5]
     3 for i in a:
     4     print(i, end=" ")
     5 print()
     6 
     7 b = ["a", "b", "c", "d"]
     8 for i in b:
     9     print(i, end=" ")
    10 print()
    11 
    12 for i in range(1,10):
    13     print(i, end=" ")
    14 
    15 print(type(range(1, 10)))
    16 
    17 # while 循环访问list
    18 # 一般不使用while遍历list
    19 c = [1, 2, 3, 4, 5, 6, 7]
    20 lenth = len(c)
    21 indx = 0
    22 while indx < lenth:
    23     print(c[indx], end=" ")
    24     indx += 1
    25 
    26 
    27 
    28 运行结果
    29 1 2 3 4 5 
    30 a b c d 
    31 1 2 3 4 5 6 7 8 9 <class 'range'>
    32 1 2 3 4 5 6 7 
     1 # 双层列表循环
     2 # a 为嵌套列表, 或者叫双层列表
     3 a = [["one", 1], ["two", 2], ["tree", 3]]
     4 for k, v in a:
     5     print(k, "--", v)
     6 
     7 # b = [["one", 1, "eins"], ["two", 2], ["tree", 3, 4, 5, 6]]
     8 # for k, v in b:
     9 #     print(k, "--", v)
    10 # # 不能这么使用
    11 
    12 c = [["one", 1, "eins"], ["two", 2, "zwei"], ["tree", 3, "drei"]]
    13 for k, v, w in c:
    14     print(k, "--", v, "--", w)
    15 
    16 # 列表内涵:list content
    17 # 通过简单的方法创作列表
    18 # for 创建
    19 a = ['a', 'b', 'c']
    20 #用list a创建一个list b 、
    21 # 下面代码的含义是, 对于所有a中的元素, 逐个放入新列表b中
    22 b = [i for i in a]
    23 print(b)
    24 
    25 # 对于c中所以元素乘以10, 生成一个新list
    26 c = [1, 2, 3, 4, 5]
    27 #用list c创建一个list d 、
    28 # 下面代码的含义是, 对于所有c中的元素, 逐个放入新列表d中
    29 d = [i*10 for i in c]
    30 print(d)
    31 
    32 # 还可以过滤原来list中的内容并放入新列表
    33 # 比如有列表e, 需要把所有e中的偶数生成新的列表f
    34 e = [x for x in range(1, 31)]#生成也1,30 的列表
    35 # 把f中所以偶数生成一个新列表f
    36 f = [m for m in e if m % 2 == 0]
    37 print(f)
    38 
    39 # 列表生成式可以嵌套
    40 # 有两个列表a, b
    41 a = [i for i in range(1, 4)]#生成list a
    42 print(a)
    43 b = [i for i in range(100, 400) if i % 100 == 0]
    44 print(b)
    45 
    46 # 列表生成式可以嵌套, 此时等于俩个for循环嵌套
    47 c = [m+n for m in a for n in b]
    48 print(c)
    49 
    50 # 上面代码类似下面代码
    51 for m in a:
    52     for n in b:
    53         print(m+n, end="  ")
    54 print()
    55 # len:求列表长度
    56 a = [x for x in range(1, 100)]
    57 print(len(a))
    58 # max:求列表中的最大值
    59 print(max(a))
    60 b = ['man', 'film', 'python']
    61 print(max(b))
    62 
    63 # list:将其他格式的数据转换成list
    64 a = [1, 2, 3]
    65 print(list(a))
    66 s = "I love python"
    67 print(list(s))
    68 
    69 # 把range产生的内容转换成list
    70 print(list(range(12, 19)))

    # 关于列表的函数

     1 # 关于列表的函数
     2 
     3 list1 = ['a', 'i love xj', 45, 766, 5+4j]
     4 print(list1)
     5 # append插入一个内容
     6 a = [i for i in range(1,5)]
     7 print(a)
     8 a.append(100)
     9 print(a)
    10 # insert:指定位置插入
    11 # insert(index, data), 插入位置是insert前面(完成后处于什么位置)
    12 a.insert(3, 200)
    13 print(a)
    14 # del:删除
    15 # pop, 从对应位拿出一个元素, 即把最后一个元素取出来
    16 last_ele = a.pop()
    17 print(last_ele)
    18 print(a)
    19 
    20 # remove:在列表中删除指定的值的元素
    21 # 如果被删除的值没在list中,则报错
    22 # 即, 删除list指定值的操作应该使用try。。。excepty语句,或者先进行判断
    23 print(id(a))
    24 a.remove(200)
    25 print(a)
    26 print(id(a))

    运行结果:
    ['a', 'i love xj', 45, 766, (5+4j)]
    [1, 2, 3, 4]
    [1, 2, 3, 4, 100]
    [1, 2, 3, 200, 4, 100]
    100
    [1, 2, 3, 200, 4]
    2354949945480
    [1, 2, 3, 4]
    2354949945480

     1 # clear:清空
     2 a = [1, 2, 3, 4, 5]
     3 
     4 print(a)
     5 print(id(a))
     6 a.clear()
     7 print(a)
     8 print(id(a))
     9 print("--------------")
    10 # 如果不需要列表地址保持不变, 则清空列表可以使用以下方式
    11 b = [1, 2, 3]
    12 print(b)
    13 print(id(b))
    14 b = list()
    15 b = []
    16 print(b)
    17 print(id(b))

    运行结果:
    [1, 2, 3, 4, 5]
    1834734417288
    []
    1834734417288
    --------------
    [1, 2, 3]
    1834734417160
    []
    1834734417160  #加上b = list()地址还是保持不变


    # 如果不需要列表地址保持不变, 则清空列表可以使用以下方式
    b = [1, 2, 3]
    print(b)
    print(id(b))
    # b = list()
    b = []
    print(b)
    print(id(b))


    运行结果:
    [1, 2, 3]
    2191356032264
    []
    2191355209608  #不加上b = list()地址会发生改变
     1 # reverse:翻转列表内容,原地翻转
     2 a = [1, 2, 3, 4, 5]
     3 print(a)
     4 print(id(a))
     5 a.reverse()
     6 print(a)
     7 print(id(a))
     8 
     9 运行结果:
    10 [1, 2, 3, 4, 5]
    11 1986270295432
    12 [5, 4, 3, 2, 1]
    13 1986270295432
     1 # extend:扩展列表,两个列表,把一个直接拼接到后一个上
     2 a = [1, 2, 3, 4, 5]
     3 b = [6, 7, 8, 9, 10]
     4 print(a)
     5 print(id(a))
     6 a.extend(b)
     7 print(a)
     8 print(id(a))
     9 运行结果:
    10 [1, 2, 3, 4, 5]
    11 1657976485256
    12 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    13 1657976485256
    
    
     1 # count:返查找列表中指定值或元素的个数
     2 a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
     3 print(a)
     4 a.append(8)
     5 a.insert(4, 8)
     6 print(a)
     7 a_len = a.count(8)
     8 print(a_len)
     9 
    10 运行结果:
    11 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    12 [1, 2, 3, 4, 8, 5, 6, 7, 8, 9, 10, 8]
    13 3
     1 # copy:拷贝, 浅拷贝
     2 # 列表类型变量赋值实例
     3 a = [1, 2, 3, 4, 5, 666]
     4 print(a)
     5 # list类型,简单赋值操作,是传地址
     6 b = a
     7 b[-1] = 777
     8 print(a)
     9 print(id(a))
    10 print(b)
    11 print(id(b))
    12 
    13 print("*" * 20)
    14 b = a.copy()
    15 print(a)
    16 print(id(a))
    17 print(b)
    18 print(id(b))
    19 
    20 print("*" * 30)
    21 b[-1] = 888
    22 print(a)
    23 print(b)
    24 
    25 运行结果:
    26 [1, 2, 3, 4, 5, 666]
    27 [1, 2, 3, 4, 5, 777]
    28 2546992182664
    29 [1, 2, 3, 4, 5, 777]
    30 2546992182664
    31 ********************
    32 [1, 2, 3, 4, 5, 777]
    33 2546992182664
    34 [1, 2, 3, 4, 5, 777]
    35 2546992182536
    36 ******************************
    37 [1, 2, 3, 4, 5, 777]
    38 [1, 2, 3, 4, 5, 888]
     
    1
    # cpoy:拷贝,浅拷贝和深拷贝区别 2 # 出现下面问题是,copy函数是个浅拷贝,即只可拷贝一层内容 3 a = [1, 2, 3, [10, 20, 30]] 4 b = a.copy() 5 print(id(a)) 6 print(id(b)) 7 print(id(a[3])) 8 print(id(b[3])) 9 10 a[3][2] = 666 11 print(a) 12 print(b) 13 14 运行结果: 15 2337052980168  #a和b的id不一样 16 2337053832456   17 2337053832584  #a和b内部深一层的id是一样的 18 2337053832584   19 [1, 2, 3, [10, 20, 666]]  20 [1, 2, 3, [10, 20, 666]]






  • 相关阅读:
    点击空白处回收键盘
    数据处理文件读取---预习 1.30
    界面通信之属性传值、代理传值
    UITableView的添加、删除、移动操作
    加载plist文件数据的方法
    UITableViewCell的重用机制
    自定义cell自适应高度
    关于Xcode7更新之后使用 SDWebImage 图片加载不出来
    简述frame、bounds、center
    layoutSubviews方法需要被调用的情况有哪些
  • 原文地址:https://www.cnblogs.com/Slxc/p/9705360.html
Copyright © 2011-2022 走看看