当前位置: 首页 > news >正文

Python入门Day4

Python中数据的常用操作

数据拷贝

根据以下代码可以看出l1和l2实际上都是对于数据的引用,当l1被改变了,l2也会发生同样的改变,l2 = l1只是将l2指向了l1所指向的地址。

>>> l1 = [1,2,[3,4],[5,6]]
>>> l2 = l1
>>> l1[2][0] = 1
>>> print(l1[2][0])
1
>>> print(l2[2][0])
1
>>>        

那么该如何使得l2不再指向l1所指向的数据,自己开辟一块新的数据呢?我们可以使用copy这个方法
可以看出,copy生成的l2在l1被修改之后并不会修改。

>>> l1 = [1,2,[3,4]]
>>> l2 = l1.copy()
>>> l1[0] = 7
>>> print(l1)
[7, 2, [3, 4]]
>>> print(l2)
[1, 2, [3, 4]]

但是问题并没有被完全解决。从以下代码可以看出,外层的数据浅拷贝之后互不影响;但是嵌套的列表结构浅拷贝之后还是会互相影响。因此在这种情况下需要用到深拷贝

>>> l1 = [1,2,[3,4]]
>>> l2 = l1.copy()
>>> l1[0] = 7
>>> print(l1)
[7, 2, [3, 4]]
>>> print(l2)
[1, 2, [3, 4]]
>>> l1 = [1,2,[3,4]]
>>> l2 = l1.copy()
>>> l2[0] = 7
>>> print(l2)
[7, 2, [3, 4]]
>>> print(l1)
[1, 2, [3, 4]]
>>> l2[2][0] = 6
>>> print(l1)
[1, 2, [6, 4]]
>>> print(l2)
[7, 2, [6, 4]]

深拷贝需要导入copy包,使用copy.deepcopy(l1)的方法拷贝l1。下面的方法拷贝之后l1中的嵌套列表被修改,l2中的值也不会变。

>>> l1 = [1,2,[3,4]]
>>> l2 = copy.deepcopy(l1)
>>> l1[2][0] = 7
>>> print(l1)
[1, 2, [7, 4]]
>>> print(l2)
[1, 2, [3, 4]]

运算符

Python运算符可以分为七类:
算术运算符、比较运算符、赋值运算符、逻辑运算符、位运算符、成员运算符、身份运算符。
Python运算符可以分为七类,每类运算符都有其特定的用途和语法规则:

  1. 算术运算符
    用于基本的数学运算:
    • 加法(如:3 + 5 = 8)
    • 减法(如:10 - 4 = 6)
    • 乘法(如:2 * 6 = 12)
  • / 除法(如:9 / 3 = 3.0)
  • % 取模(如:10 % 3 = 1)
  • ** 幂运算(如:2 ** 3 = 8)
  • // 取整除(如:9 // 2 = 4)
  1. 比较运算符
    用于比较两个值,返回布尔值True或False:
  • == 等于(如:5 == 5 → True)
  • != 不等于(如:3 != 2 → True)
  • 大于(如:6 > 4 → True)

  • < 小于(如:3 < 5 → True)
  • = 大于等于(如:7 >= 7 → True)

  • <= 小于等于(如:4 <= 5 → True)
  1. 赋值运算符
    用于给变量赋值:
  • = 基本赋值(如:x = 5)
  • += 加法赋值(如:x += 3等价于x = x + 3)
  • -= 减法赋值
  • *= 乘法赋值
  • /= 除法赋值
  • %= 取模赋值
  • **= 幂赋值
  • //= 取整除赋值
  1. 逻辑运算符
    用于组合条件判断:
  • and 与(如:x > 0 and x < 10)
  • or 或(如:x == 5 or x == 10)
  • not 非(如:not(x > 10))
  1. 位运算符
    对数值的二进制位进行操作:
  • & 按位与
  • | 按位或
  • ^ 按位异或
  • ~ 按位取反
  • << 左移
  • 右移

  1. 成员运算符
    测试序列中是否包含某个成员
  • in (如:‘a’ in [‘a’,‘b’,‘c’] → True)
  • not in (如:‘d’ not in ‘abc’ → True)
  1. 身份运算符
    比较两个对象的内存地址:
  • is (如:a is b)
  • is not (如:x is not None)
    is和==的区别:is用于判断两个变量引用对象是否是同一个,==用于判断引用变量的值是否相等。

数据结构基础

数据结构的分类:
–线性表
–数组
–链表
–队列
–树
–图
–堆栈
–散列表

http://www.dtcms.com/a/267220.html

相关文章:

  • Cortex-M 异常处理的 C 实现、栈帧以及 EXC_RETURN
  • 操作符详解(上)
  • 深入解析Redis 7.0中每种数据类型的底层实现
  • 【Qt】QStringLiteral 介绍
  • 2025最新Telegram快读助手:一款智能Telegram链接摘要机器人
  • 深入理解微服务中的服务注册与发现
  • 《Java修仙传:从凡胎到码帝》第四章:设计模式破万法
  • 云原生微服务间的异步消息通信:最终一致性与系统容错的架构实战
  • 供应链管理学习笔记4-供应链网络设计
  • 前端-CSS-day1
  • QT中的网络通信
  • LLM:位置编码详解与实现
  • 深层神经网络:原理与传播机制详解
  • java的注解和反射
  • JVM的位置和JVM的结构体系
  • 交互式剖腹产手术模拟系统开发方案
  • 【openp2p】学习3:【专利分析】一种基于混合网络的自适应切换方法、装 置、设备及介质
  • C# 事件(事件访问器)
  • vue中添加原生右键菜单
  • [特殊字符]全面解锁远程运维新时代:CRaxsRat v7.4 工具实用指南(附推荐资源)
  • Oracle 高级 SQL 查询与函数详解:多表连接、子查询、聚合、分析函数
  • 冒泡和快速排序的区别
  • faster_lio 原理及代码
  • 【Oracle专栏】分区表增加分区
  • WPF学习笔记(25)MVVM框架与项目
  • spring-ai-alibaba 1.0.0.2 学习(十二)——聊天记忆扩展包
  • 深度学习的核心理论与技术
  • 11_架构演进:从单体到云原生的蜕变
  • 炸鸡派例程-ADC
  • RabbitMQ 4.1.1初体验-队列和交换机