(此文是在实际工程中遇到的一些小问题,给予解决和整理。解决方法大多来自网上零散的文章。有一个系统化的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

Python tips(相关推荐

  1. python tips(持续更新)

    1. 引用上一层目录 import sys sys.path.append('..') import xx 2. python json JSON是一种轻量级的数据交换格式.可以解决数据库中文存储问题 ...

  2. 关于深度学习批量处理的一些小Tips(python)

    关于深度学习批量处理的一些小Tips(python) 成为时间管理大师,我休息了但是机器不能休息! 批量运行程序 使用 shell 进行 python 运行 1. Linux 上: 2.windows ...

  3. 《python数据分析(第2版)-阿曼多.凡丹戈》读书笔记第1章-jupyter及常见库

    python学习笔记-目录索引 <python数据分析(第2版)-阿曼多.凡丹戈>. 该书是一本介绍如何用Python进行数据分析的学习指南.全书共12章,从Python程序库入门.Num ...

  4. [Python Tips]去除 Trivial 赋值语句

    [Python Tips]去除 Trivial 赋值语句 写 python 这么久,其实有许多小技巧记在了脑子里,当然,其中也烂掉了不少.今天正好有同事问关于怎么去除 trivial 赋值语句问题,觉 ...

  5. 《Python程序设计(第3版)》[美] 约翰·策勒(John Zelle) 第 3 章 答案

    <Python程序设计(第3版)>[美] 约翰·策勒(John Zelle) 第 3 章 答案 答案仅供参考,若有错误欢迎指正 判断对错 1.由计算机存储和操作的信息称为数据. 2.由于浮 ...

  6. Python+selenium(一)

    1.selenium介绍 主要由webdriver.IDE.grid 2.selenium环境配置 (1)准备Python环境 (2)准备selenium环境 (3)下载浏览器对应driver版本 C ...

  7. Python多线程(3)——Queue模块

    Python多线程(3)--Queue模块 Queue模块支持先进先出(FIFO)队列,支持多线程的访问,包括一个主要的类型(Queue)和两个异常类(exception classes). Pyth ...

  8. python列表(数组)

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

  9. Python偏相关(Partial Correlation)或者部分相关性系数计算实战:偏相关性(Partial Correlation)计算及结果解读

    Python偏相关(Partial Correlation)或者部分相关性系数计算实战:偏相关性(Partial Correlation)计算及结果解读 目录

最新文章

  1. 企业必备:商业智能中应该具备的3种仪表盘(Dashboards)
  2. 客户端升级为select模型
  3. python购物车程序-Python编写购物车程序
  4. MyEclipse 2017汉化版安装教程
  5. 在mac中导入hadoop2.6.0源代码至eclipse
  6. vscode插件开发实践与demo源码
  7. 时间戳转中国人能看得懂的日期格式 yy-mm-dd
  8. 机器学习很难上手和提升?你只差一条学习路径!
  9. [19/04/29-星期一] GOF23_行为型模式(责任链模式、迭代器模式)
  10. Spring的9种设计模式(二)
  11. app一键签名工具 --- Android Sign Kit v1.0免费版
  12. java后端尝试使用WebOffice在线编辑
  13. android led 字体下载,Android LED数字/电子表字体digital font
  14. 频响测试软件的使用教程,频谱分析仪的使用方法与技巧
  15. echarts做了一个气泡图
  16. 余三码的意义和加法运算
  17. 思科交换机如何配置Trunk?
  18. 【小程序开发之文章详情页面的设计】文章详情页面如何布局
  19. base64编码上传图片java后台接收实例
  20. 爬虫练习:爬取网页数据

热门文章

  1. 用了虚拟机Linux不能上网,虚拟机Linux不能上网怎么办
  2. python学习笔记(九)——文件和异常(重点)
  3. python连通域标记_pythonamp;#8212;二值图像连通域标记 - 易采站长站
  4. element-ui table点击某行,修改背景颜色(即高亮)
  5. 基于matlab水轮机期刊,基于MATLAB/SIMULINK的水轮机调节系统寻优
  6. android 让item满屏,Android的全屏活动?
  7. Java第三大的数,Java通过排序找出数组第三大数字
  8. java impala_impala 概述
  9. 第十天2017/04/21(2、泛型编程:模板 / 全特化、偏特化)
  10. MFC 不存在从 CString 到 char * 的适当转换函数