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

Python tips(

(此文是在实际工程中遇到的一些小问题,给予解决和整理。解决方法大多来自网上零散的文章。有一个系统化的Python问题解决方案,来自《Python 3 学习笔记》雨痕著,其中对Python的工作细节进行了一些整理,很有参考价值。)

1——如下代码,

a=[1,2,3]
b=a

b也是[1,2,3]了,接着

a[0]=4
a[1]=5
a[2]=6

此时a变成[4,5,6]了,再看b,a变了之后没有对b进行新的引用,但b还是变了,自动的也变成[4,5,6]了。

除非对a进行新的赋值,比如

>>>a=[7,8,9]
>>>a
>>>[7,8,9]
>>>b
>>>[4,5,6]

 这是因为列表被定义为是可变类型,相对的是不可变类型。如Python文档所示:

12

3

可以看到,不可变类型只有:数字,字符串,元组。其它的类型都是可以在名字不变的情况下,对其内容进行修改,并且会影响到其他引用它的变量。

 再比如:

 >>>a=[1]
 >>>c=[]
 >>>c.append(a)
>>>c [[1]] >>>a.append(2) >>>c [[1,2]]

 1.1——父作用域属性不会影响到子作用域。

>>> a = 0
>>> a = [1]
>>> c = (a)
>>> type(c)
list
>>> c = (a, 1)
>>> type(c)
tuple
>>> a.append(2)
>>> c
([1, 2], 1)

即元组不可变,但其内部的可变类型,如列表,可以随时改变

2——当你需要引用一个数组的其中一部分,而此数组的长度是不确定的,导致你有可能引用的范围超过了它的长度,可以在引用范围中加上一个冒号:

a_list = []            #此两行代码是正确的,不会报错
b_list = a_list[-1:]   #比如-1后面的冒号

  此时如果使用b_list=a_list[-1],程序会报错,“IndexError: list index out of range”;再比如

  a_list 的长度随着程序的运行会变化,有可能是长3,也有可能变成5个元素,但必须保证b_list不能包含a_list的后面四个元素,

  此时可以使用

  b_list = a_list[:-4]

  这样,即使a_list==[1,2,3],b_list也能成功引用,结果是b_list==[] 。

3——参数前加上单星号或双星号

4——改变对象值的方法是没有返回值的。比如

>>list_2 = list_1.reverse()
>>print(type(list_2))
>>NoneType
 
 
  
>>
>>list_2 = list_1.remove(n)
>>print(type(list_2))
>>NoneType
>>

 

 

 

 

5——

 

转载于:https://www.cnblogs.com/oler/p/9528933.html

相关文章:

  • C#窗体越界时鼠标还能回到初始坐标位置
  • SQLServer 2014 本地机房HA+灾备机房DR解决方案
  • Java编程笔试面试题:分析下列程序的执行结果
  • 机器学习常见的优化算法
  • SQL 内连接,外连接(左外连接、右外连接)
  • 进程和任务计划
  • 文件、目录管理
  • centos7安装配置mysql5.6
  • 类的成员和嵌套(建模)
  • vue-组件基础
  • 办公用品管理系统VB——库存数量导出EXCEL,SaveEXCEL
  • 字节、字、bit、byte的关系
  • Timer 控件中的Elapsed事件与tick事件的区别
  • @ConfigurationProperties注解对数据的自动封装
  • Java 中创建子类对象会创建父类对象么?
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • CentOS从零开始部署Nodejs项目
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • js递归,无限分级树形折叠菜单
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • Redux系列x:源码分析
  • windows-nginx-https-本地配置
  • 大整数乘法-表格法
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 微信小程序开发问题汇总
  • 我有几个粽子,和一个故事
  • 移动端唤起键盘时取消position:fixed定位
  • 用简单代码看卷积组块发展
  • 在weex里面使用chart图表
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​Java并发新构件之Exchanger
  • # centos7下FFmpeg环境部署记录
  • (C语言)球球大作战
  • (定时器/计数器)中断系统(详解与使用)
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .net core Swagger 过滤部分Api
  • .NET 发展历程
  • @Transactional类内部访问失效原因详解
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题
  • [ABC294Ex] K-Coloring
  • [ai笔记4] 将AI工具场景化,应用于生活和工作
  • [Codeforces] combinatorics (R1600) Part.2
  • [dts]Device Tree机制
  • [IT生活推荐]大家一起来玩游戏喽,来的都进!
  • [Java] 什么是IoC?什么是DI?它们的区别是什么?
  • [Kubernetes]2. k8s集群中部署基于nodejs golang的项目以及Pod、Deployment详解
  • [Kubernetes]4. 借助腾讯云TKE快速创建Pod、Deployment、Service部署k8s项目
  • [LeetBook]【学习日记】获取子字符串 + 颠倒子字符串顺序
  • [NEWS] J2SE5.0来了
  • [NISACTF 2022]join-us