yyz notes yyz notes
首页
  • RBAC权限设计
  • 架构图标设计
  • 账号体系
  • python基础
  • python高级
  • python模块
  • python设计模式
  • python数据结构与算法
  • django
  • django-DRF
  • flask
  • 直接设计开源pip包
  • 直接设计开源项目
  • python示例题/脚本
  • python面试题
  • golang基础
  • golang高级
  • golang常用组件
  • gin框架
  • es6
  • javascript
  • react
  • vue
  • TypeScript
  • mysql
  • redis
  • minio
  • elasticsearch
  • mongodb
  • 消息队列
  • 自动化测试
  • 操作系统

    • linux
    • windows
  • nginx
  • docker
  • k8s
  • git
  • ldap
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

益章

可乐鸡翅
首页
  • RBAC权限设计
  • 架构图标设计
  • 账号体系
  • python基础
  • python高级
  • python模块
  • python设计模式
  • python数据结构与算法
  • django
  • django-DRF
  • flask
  • 直接设计开源pip包
  • 直接设计开源项目
  • python示例题/脚本
  • python面试题
  • golang基础
  • golang高级
  • golang常用组件
  • gin框架
  • es6
  • javascript
  • react
  • vue
  • TypeScript
  • mysql
  • redis
  • minio
  • elasticsearch
  • mongodb
  • 消息队列
  • 自动化测试
  • 操作系统

    • linux
    • windows
  • nginx
  • docker
  • k8s
  • git
  • ldap
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • python基础

    • python概述

    • python环境搭建

    • python基础语法

      • 变量与常量
      • 基本数据类型-整数类型
      • 基本数据类型-浮点数类型
      • 基本数据类型-复数类型
      • 基本数据类型-布尔类型
      • 基本数据类型-bytes类型
      • 复杂数据类型-序列
      • 复杂数据类型-字符串
      • 复杂数据类型-列表
        • 列表
        • 增
        • 删
        • 改
          • 修改单个元素
          • 修改多个元素
        • 查
        • 其它用法
        • 面试题
      • 复杂数据类型-元组
      • 复杂数据类型-字典
      • 复杂数据类型-集合
      • list,tuple,dict,set的区别和联系
      • 推导式
      • 浅拷贝和深拷贝
      • 运算符
      • 输入输出
    • python关键字与标识符

    • python流程控制

    • python函数

    • python内置函数

    • python面向对象

    • python模块与包

    • python文件IO与OS

    • python异常处理机制

  • python高级

  • python模块

  • python设计模式

  • python数据结构与算法

  • django

  • django-DRF

  • flask

  • 自己设计开源pip包

  • 自己设计开源项目

  • python小示例

  • python面试题

  • python
  • python基础
  • python基础语法
YiZhang-You
2023-05-09
目录

复杂数据类型-列表

# 列表

# 增

添加元素

  • append():追加,在列表的末尾添加元素。它可以是单个元素,也可以是列表、元组等。
  • extend():扩展,在列表的末尾添加元素。它可以是单个元素,也可以是列表、元组等,但不能是单个的元素。
  • insert(index , obj):在指定位置插。insert() 会将 obj 插入第 index 个元素的位置。
l1 = [22, 33, 44, 55]
# 1.1append,追加,在列表的末尾添加元素                  常用
l1.append(66)  # 追加单个元素
# l1.append(77,88)  #报错:TypeError: append() takes exactly one argument (2 given)
l1.append([77, 88])  # 追加多个元素,不能直接追加,通过列表的形式追加,形成了一个二维列表

# 1.2extend,扩展,在列表的末尾添加元素
l2 = [22, 33, 44, 55]
# l2.extend(66)   #T报错:ypeError: 'int' object is not iterable 不能是单个数字
l2.extend([66])  # 追加单个元素,不能直接添加,参数一定是可迭代的
l2.extend([77, 88])

# 1.3insert,插入,在指定索引处插入一个元素,后面的元素向后顺延
# 列表名.insert(索引,被插入的元素)
l3 = [22, 33, 44, 55]
l3.insert(2, 66)  # 插入单个元素
l3.insert(1, [77, 88])  # 插入多个元素:和append类似,将整个列表直接插入

print(l1)
print(l2)
print(l3)
"""
总结:
列表名.功能名(xx)
append可以直接添加单个元素,而extend不能
append在添加多个元素的时候,是以列表的形式添加,而extend只添加元素【打碎加入】
insert():在指定位置插入元素
"""
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

# 删

删除元素

  • 根据索引进行删除,使用 del 关键字或者 pop() 方法;pop()默认删除最后一个
  • 根据元素本身的值进行删除,使用列表(list类型)提供的 remove() 方法;值不存在报错
  • 将列表中所有元素全部删除,使用列表(list类型)提供的 clear() 方法。
# pop,弹出,移除并获取列表中指定索引处的元素    在栈中【列表的底层工作原理是栈】

list1 = [11, 22, 33, 44, 55]
# 1.pop() 注意:pop在默认情况下删除的是最后一个元素
result1 = list1.pop()
print(list1)
print(result1) # 删除的元素
result2 = list1.pop(2) # 删除下标为2的
print(list1)
# del 
del list1[0: 1]
del list1[0]

# 2.remove() 移除,直接操作的是元素,不存在则报错
list2 = [11, 22, 33, 44, 55, 33, 33, 55]
list2.remove(22)
print(list2)

# 注意:移除指定元素在列表中第一次匹配到的元素【从左往右】!
# 注意会改变原有列表的索引,当删了33,后面的元素都会向前面移动一位
list2.remove(33)
print(list2)

# 3.clea()r   清除,将指定列表变为空列表      使用场景:循环中,每次需要清空【重置】列表
list2.clear()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

# 改

列表元素的替换/修改

  • 通过下标

# 修改单个元素

list1 = [3,2,1]
list1[0] = 99
print(list1)  # [99,2,1]
1
2
3

# 修改多个元素

nums = [40, 36, 89, 2, 36, 100, 7]
#修改第 1~4 个元素的值(不包括第4个元素)
nums[1: 4] = [45.25, -77, -52.5]
print(nums)  # [40, 45.25, -77, -52.5, 36, 100, 7]
1
2
3
4

# 查

列表元素的访问:从0开始

  • 索引,切片
  • len:长度 max():最大值 min():最小值 count():计数
  • index():下标
list1 = [i for i in range(101)]
list3 = list1
# 通过索引访问
print(list1[0])
print(list1[-1])
# print(list1[1000]) 列表下标越界

# 切片 格式:列表名[start:end:step],包头不包尾
print(list3[2:])  # 获取从开头到指定下标的元素。。。。
print(list3[2:6])  # 截取指定区间
print(list3[4:100])  # 特殊情况1:如果end超出了下标的范围,则默认获取从指定下标开始到结尾的元素 等价于print(list3[4:])
print(list3[1:6:2])  # 1,3,5#特殊情况2:step在默认情况下为1
print(list3[-1:-6])  # 当start和end都为负数,step为正数的时候,获取的结果为[]
# 将列表倒序输出 当start,end和step都为负数的时候,表示倒序
print(list3[-1::-1])
print(list3[::-1])
print(list3[-1:-6:-2])

# 3.1len(),获取列表长度
print(len(list1))
# 3.2max(),获取列表中的最大值
print(max(list1))
# 3.3min(),获取列表中的最小值
print(min(list1))
# 3.4index(),获取指定元素在原列表中第一次匹配到的索引
print(list1.index(11))  # 11在list1列表的索引
print(list1.count(2))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

# 其它用法

  • reverse 反转列表
  • sort() 排序(内部进行排序,不生成新列表)
  • sored() 排序(生成了一个新的列表)
  • copy() 在列表中
    • list2 = list1 # 不新开辟内存空间
    • list2 = list1.copy() #开辟一个新的内存空间
  • 转换list() tuple()
# 其他用法
# reverse,反转
list1 = [35, 4, 5, 4, 654]
print(list1[-1::-1])
list1.reverse()
print(list1)

# sort,排序,默认为升序,在列表内部进行排序
# 列表名.sort()
list1.sort()  # 升序
list1.sort(reverse=True)  # 降序

# sorted,排序,默认为升序,生成了一个新的列表
# sorted(列表名)
newList = sorted(list1)  # 升序
newList2 = sorted(list1, reverse=True)  # 降序

# copy,拷贝
list1 = [23, 54, 56]
list2 = list1  # 没有重新开辟内存空间,
list2[1] = 100
print(list1)
print(list2)
print(id(list1) == id(list2))

# copy,深拷贝,堆空间层面上的拷贝【实体】
list1 = [23, 54, 56]
list2 = list1.copy()  # 重新开辟内存空间,但是只有第一层
list2[1] = 100
print(list1)
print(list2)
print(id(list1) == id(list2))

# 转换
# list(),tuple()

# 二维列表:遍历
l1 = [[11, 22, 33, 44], [44, 55, 66]]
print(l1[0])  # l1[0] = [11, 22, 33, 44]
print(l1[0][2])

for i in l1:
    for j in i:
        print(j)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

# 面试题

list1 = [54, 6, 57, 5, 57, 7, 6, 7,22, 57, 57, 57, 436]
# 模拟index
for i in range(len(list1)):  
    if list1[i] == 22:
        print(i)
               
# count(),统计个数,统计指定元素在列表中出现的次数
print(list1.count(22))  # 统计22在列表中出现的次数

# 删除所有的57 ! 因为删除列表的元素,后面的元素都会向前面移动,所以会导致有的元素删除失败。要么从列表后面开始删除,要么浅拷贝
for i in list1[:]: 
    if i == 57:
        list1.remove(57)
print(list1)

# 模块copy ,copy(),deeepcopy()【面试题】
# 内容角度上的拷贝,copy只拷贝最外层,deepcopy可以拷贝内层的内容【二维列表中】
a = [1, 2, 3]
b = [4, 5, 6]
c = [a, b]  

d = copy.copy(c)  # 浅拷贝,但用的还是父的引用
print(id(d) == id(c))  # False

e = copy.deepcopy(c) # 深拷贝
print(id(e) == id(c))  # False

a.append(4)
print(c)  # [[1, 2, 3, 4], [4, 5, 6]]
print(d)  # [[1, 2, 3, 4], [4, 5, 6]] # 浅拷贝只第一层,这里是第二层
print(e)  # [[1, 2, 3], [4, 5, 6]]

"""
d:[[1, 2, 3], [4, 5, 6]]
[list1,list2]---->list1:[1,2,3]  list2:[4,5,6]
"""
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

1

编辑 (opens new window)
上次更新: 2023/05/17, 23:08:21
复杂数据类型-字符串
复杂数据类型-元组

← 复杂数据类型-字符串 复杂数据类型-元组→

最近更新
01
配置yun源
05-24
02
linux-配置python虚拟环境
05-24
03
linux文件目录管理
05-24
更多文章>
Theme by Vdoing | Copyright © 2023-2023 yizhang | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式