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

  -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]]

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

python---[列表]lsit相关推荐

  1. Python列表List

    Python列表List(可变的): 列表的特点: 1.其中的元素可以不是同一类型的: example: list = [1, 2, "Qihe", True] 2.列表中的元素可 ...

  2. python列表(数组)

    python列表(数组) 列表(list)  就是 数组 - 列表是Python中的一个对象 - 对象(object)就是内存中专门用来存储数据的一块区域 - 之前我们学习的对象,像数值,它只能保存一 ...

  3. insert 语句的选择列表包含的项多于插入列表中的项_如何定义和使用Python列表(Lists)

    Python中最简单的数据集合是一个列表(list).列表是方括号内用逗号分隔的任何数据项列表.通常,就像使用变量一样,使用=符号为Python列表分配名称. 如果列表中包含数字,则不要在其周围使用引 ...

  4. python列表嵌套字典取值_Python基础语法:你不得不知的几种变量类型

    (点击上方快速关注并设置为星标,一起学Python) 作者:kina_chen來源:简书 01. Python编码Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字, ...

  5. python列表的实现原理_Python列表对象实现原理

    Python 列表对象实现原理 Python 中的列表基于 PyListObject 实现,列表支持元 素的插入.删除.更新操作,因此 PyListObject 是一个变长 对象(列表的长度随着元素的 ...

  6. Python 列表、字典、元组的一些小技巧

    1. 字典排序 我们知道 Python 的内置 dictionary 数据类型是无序的,通过 key 来获取对应的 value.可是有时我们需要对 dictionary 中的 item 进行排序输出, ...

  7. python列表(list)+索引切片+修改+插入+删除+range函数生成整数列表对象

    python列表(list)+索引切片+修改+插入+删除+range函数生成整数列表对象 列表(list)是什么? 列表是Python中内置有序.可变序列,列表的所有元素放在一对中括号"[] ...

  8. python列表(list)中出现次数最多的元素使用collection包的Counter方法

    python列表(list)中出现次数最多的元素使用collection包的Counter方法 collections模块自Python 2.4版本开始被引入,包含了dict.set.list.tup ...

  9. python 列表、字典转json字符串

    python 列表.字典转json字符串 代码 import json data1 = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ] data ...

  10. python列表字典操作_Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结...

    创建列表 sample_list = ['a',1,('a','b')] Python 列表操作 sample_list = ['a','b',0,1,3] 得到列表中的某一个值 value_star ...

最新文章

  1. 蜘蛛搜索引擎_各大搜索引擎的蜘蛛特点
  2. 一位美国前辈工程师的十大职业发展忠告
  3. 帆软报表多行多条数据写入表_在线报表FineReport中多数据集如何实现层式报表...
  4. MySQL子查询作为列_mysql 列子查询
  5. 本周DOT将解锁302.47万枚,上周共质押919.9万枚
  6. 【MFC 学习笔记】CheckListBox
  7. 51单片机毕业设计题目大全
  8. 拉登是我罩的队_软件需求规格说明书
  9. 二阶微分方程解法总结 Summary of Second Order Equations
  10. 计算机应用数值换算,单位换算计算器完整版
  11. 转速环PI参数整定详解(三)——转速环开环传函特性及其整定策略(有最终推导结果公式)
  12. 企业微信文件会过期吗?
  13. java后台怎么解密md5,Java md5 密码加解密
  14. Reciprocal Learning Networks for Human Trajectory Prediction
  15. 科学计算机js代码,利用js实现在线科学计算器代码
  16. 电脑引导,电脑常见开机引导错误的解决方法
  17. 自定义view之刻度尺
  18. mysql热备工具_MySQL热备工具Xtrabackup
  19. 背光的工作原理及结构
  20. 5G wifi 和 5G通信

热门文章

  1. Linux有趣指令(二)
  2. python替代_2.3.1 Python 实现的替代者
  3. 用python设计学生管理系统_Django实现学生管理系统实例分享
  4. websocket 发送给前端一个对象_前端WebSocket封装
  5. c语言关于链表选择题看不懂,有关链表基本操作三题
  6. sql实现like多个值的查询
  7. 分组查询 group by 子句及order by子句
  8. 面试:TCP协议面试10连问,总会用得到,值得收藏!
  9. 由浅入深,聊聊权限设计
  10. easyui dialog的一个小坑