博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python---[列表]lsit
阅读量:5317 次
发布时间:2019-06-14

本文共 8604 字,大约阅读时间需要 28 分钟。

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

  -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 b10 10 print(b)11 12 运行结果:13 242991683725614 242991683725615 [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 * 36 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 False11 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 False14 True15 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 循环访问list18 # 一般不使用while遍历list19 c = [1, 2, 3, 4, 5, 6, 7]20 lenth = len(c)21 indx = 022 while indx < lenth:23     print(c[indx], end=" ")24     indx += 125 26 27 28 运行结果29 1 2 3 4 5 30 a b c d 31 1 2 3 4 5 6 7 8 9 
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 content17 # 通过简单的方法创作列表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, 生成一个新list26 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中的偶数生成新的列表f34 e = [x for x in range(1, 31)]#生成也1,30 的列表35 # 把f中所以偶数生成一个新列表f36 f = [m for m in e if m % 2 == 0]37 print(f)38 39 # 列表生成式可以嵌套40 # 有两个列表a, b41 a = [i for i in range(1, 4)]#生成list a42 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:将其他格式的数据转换成list64 a = [1, 2, 3]65 print(list(a))66 s = "I love python"67 print(list(s))68 69 # 把range产生的内容转换成list70 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 198627029543212 [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 165797648525612 [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] = 88822 print(a)23 print(b)24 25 运行结果:26 [1, 2, 3, 4, 5, 666]27 [1, 2, 3, 4, 5, 777]28 254699218266429 [1, 2, 3, 4, 5, 777]30 254699218266431 ********************32 [1, 2, 3, 4, 5, 777]33 254699218266434 [1, 2, 3, 4, 5, 777]35 254699218253636 ******************************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] = 66611 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]]

 

 

 

转载于:https://www.cnblogs.com/Slxc/p/9705360.html

你可能感兴趣的文章
Vim配置Node.js开发工具
查看>>
web前端面试题2017
查看>>
ELMAH——可插拔错误日志工具
查看>>
MySQL学习笔记(四)
查看>>
【Crash Course Psychology】2. Research & Experimentation笔记
查看>>
两数和
查看>>
移动设备和SharePoint 2013 - 第3部分:推送通知
查看>>
SOPC Builder中SystemID
查看>>
MySQL数据库备份工具mysqldump的使用(转)
查看>>
NTP服务器配置
查看>>
【转】OO无双的blocking/non-blocking执行时刻
查看>>
关于 linux 的 limit 的设置
查看>>
HDU(4528),BFS,2013腾讯编程马拉松初赛第五场(3月25日)
查看>>
vim中文帮助教程
查看>>
MySQL基础3
查看>>
RxJS & Angular
查看>>
面向对象(多异常的声明与处理)
查看>>
MTK笔记
查看>>
ERROR: duplicate key value violates unique constraint "xxx"
查看>>
激活office 365 的启动文件
查看>>