额。。。老规矩,先来一天NLP再说,也没几条了。

十,在任何一个系统里,最灵活的部分是最能影响大局的部分

灵活便是有一个以上的选择,选择便是能力,因此最灵活的人便是最有能力的人。

灵活来自减少只相信自己的一套信念,价值和规条,而多凭借观察运用环境所提供的其他条件。

灵活是使事情更快有效的的重要因素,因此,亦是人生成功快乐的重要因素。

灵活亦是自信的表现,自信越不足,坚持某个模式的态度会越强硬。

容许不同的意见和可能性,便是灵活。

在一个群体中,固执使人紧张,灵活使人放松。

灵活不代表放弃自己的立场,而是容许找出双赢的可能性(更进一步而三赢)。

在沟通中,明白人不代表接受,接受不代表投降(放弃立场)。

“流水”是学习灵活的老师。

灵活是用自己的步伐去做出转变,而固执则是在被压迫的情况下做出转变。


赋值,以及深浅copy的理解

赋值的时候,是把内容的地址给这个变量,内容是不可变数据类型,如 int, str, bool, tuple,时,一个值对应一个固定的地址。

但是如果内容是可变数据类型时,如list,dict,set的时候,拿列表来举例子 : 列表整体有个地址,他是可以变化的,即两个长得一样的列表,他们整体的地址可以不同。

然后这个整体的列表地址对应的是列表各个内容,即各个元素所对应的各自的地址,比如其中一个内容是一个数字,数字是不可变类型数据,其地址是固定的一个值,如果是一个嵌套的列表,那就是再来一次整体可变地址指向内容地址。

实验结果如下:

 #!usr/bin/env/ python
# -*- coding:utf-8 -*-
# Author: XiaoFeng
import copy
# 赋值 对于不可变数据类型,赋值就是相当于把数据的地址复制给变量
a = "abc" # ”abc“的地址给a
b = a # a所存的内容,即“abc"的地址复制给b
c = a # a所存的内容,即"abc"的地址复制给c
print(a, id(a))
print(b, id(b))
print(c, id(c))
c = "" # "32”的地址给c
print(a, b, c, id(a), id(b), id(c))
# 对于可变数据类型,赋值也是相当于把数据的地址复制给变量
a = [1, 2, 3] # 把列表的地址给a
b = a # 把a的内容,即列表的地址复制给b
c = a # 把a的内容,即列表的地址复制给c
print(a, id(a))
print(b, id(b))
print(c, id(c))
c.append("别人会变吗?") # 从c得到列表的地址,找到列表,然后更改列表的内容
print(a, b, c, id(a), id(b), id(c)) # 结果当然就变喽
# 浅copy
li = [1000, "sa"*30, 3, [12]] # 把列表的每一个元素的地址组合成一个列表,然后把这个列表的地址给li
li2 = li.copy() # 复制原列表的元素的地址,然后组合成一个新的列表,再把这个新列表的地址给li2
li2[3].append("嵌套的会变吗?") # 会的,因为里层元素的地址没变
li2.append("会变吗?") # 不会,因为新列表最外层是新的地址了
print(li, id(li), id(li[1]), id(3))
print(li2, id(li2), id(li2[1]), id(3))
# 深copy
li = [10000, "q", ["", 9], 7]
li2 = copy.deepcopy(li)
print(li, id(li), id(li[0]), id(li[2]))
print(li2, id(li2), id(li2[0]), id(li2[2])) # 哈哈,果然嵌套得列表地址不一样了
li[2].append(1000)
print(li, li2, id(li[2]), id(li2[2])) # 成功!
# 来试个嵌套嵌套
li = [1, [2, [3]]]
li2 = copy.deepcopy(li)
print(li, id(li[1][1]), li2, id(li2[1][1])) # 地址很像,但不一样了,差点看错。。。估计是迭代的把所有可变类型的数据给了新地址
li[1][1].append("会变吗")
print(li, id(li[1][1]), li2, id(li2[1][1])) # 假设成功,神奇啊 哈哈哈哈

运行结果如下:

E:\Python\python.exe E:/python_code_dir/Python_hight/Day_11/copy_test.py
abc 12768896
abc 12768896
abc 12768896
abc abc 32 12768896 12768896 49285504
[1, 2, 3] 12404176
[1, 2, 3] 12404176
[1, 2, 3] 12404176
[1, 2, 3, '别人会变吗?'] [1, 2, 3, '别人会变吗?'] [1, 2, 3, '别人会变吗?'] 12404176 12404176 12404176
[1000, 'sasasasasasasasasasasasasasasasasasasasasasasasasasasasasasa', 3, [12, '嵌套的会变吗?']] 86211600 13259224 1360779472
[1000, 'sasasasasasasasasasasasasasasasasasasasasasasasasasasasasasa', 3, [12, '嵌套的会变吗?'], '会变吗?'] 12825984 13259224 1360779472
[10000, 'q', ['', 9], 7] 12805984 86039520 86150280
[10000, 'q', ['', 9], 7] 86211600 86039520 12827144
[10000, 'q', ['', 9, 1000], 7] [10000, 'q', ['', 9], 7] 86150280 12827144
[1, [2, [3]]] 12825984 [1, [2, [3]]] 12827184
[1, [2, [3, '会变吗']]] 12825984 [1, [2, [3]]] 12827184 Process finished with exit code 0

还有一个数字符串里有多少数字的代码:

 #!usr/bin/env/ python
# -*- coding:utf-8 -*-
# Author: XiaoFeng # 找字符串里有多少个数
o = -2
count = 0
x = input("<<<").strip()
for index, i in enumerate(x):
print(x)
if i.isalpha():
continue
if i.isdigit() and index == o + 1:
o = index
else:
count += 1
o = index
print(count)
# 升级版:
args = input("<<<:").strip()
for i in args:
print(args)
if i.isalpha():
args = args.replace(i, " ") # 用空格替换字母 这里的args 变了 但是改的是已经被i接收了的位 没改后面的,所以对后面没影响
final_list = args.split() # 默认以任意数量空格来分割成列表
print(len(final_list))

python3 完全理解赋值,浅copy,深copy 通过地址详细理解~的更多相关文章

  1. struts2从浅至深(二)详细配置

    1.加载时机 当应用被服务器加载时,Struts的配置文件就已经加载了 2.加载顺序 default.properties------->struts-default.xml---------& ...

  2. 铁乐学Python_day07_集合and浅谈深浅copy

    1.[List补充] 在循环一个列表时,最好不要使用元素和索引进行删除操作,一旦删除,索引会随之改变,容易出错. 如果想不出错,可以采用倒着删除的方法,因为倒着删除进行的话,只是后面元素的位置发生了变 ...

  3. python基础之赋值/深copy/浅copy

    首先,不管是赋值还是深浅copy,都是针对那些可能会产生变化的值进行区分的,也就是对于数字,字符串来说,区分赋值,深浅copy是毫无意义的. 那么,让我们来对那些可变的像list set dict t ...

  4. Python学习-赋值、浅copy和深copy

    Python Copy: 在Python语言中,分为浅拷贝和深拷贝两种形式,也就是官方文档中的Shadow copy和Deep copy.在对简单的对象(object)进行复制时,两者没有区别,如下面 ...

  5. python学习笔记-(六)深copy&浅copy

    在python中,对象赋值实际上是对象的引用.当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用. 1. 赋值 赋值其实只是传递对象引用,引用对象 ...

  6. (五)聊一聊深Copy与浅Copy

    一.关于浅copy与深copy 首先说明一下: 在python中,赋值其实就是对象的引用,变量就是对象的一个标签,如果把内存对象比喻成一个个房间,那么变量就是门牌号. 深copy与浅copy只是针对可 ...

  7. 2 引用 深copy 浅copy

    1. is == 总结 is 是比较两个引用是否指向了同一个对象(引用比较). == 是比较两个对象是否相等. In [1]: a = [11,22,33] In [2]: b = [11,22,33 ...

  8. Python学习日记(六) 浅深copy

    浅深copy即完全复制一份和部分复制一份 浅深copy在列表数据量较大时不建议使用,比较消耗内存资源 1.赋值运算 l1 = [1,'s',[1,2,3]] l2 = l1 print(id(l1), ...

  9. python中深copy,浅copy与赋值语句的区别

    以下详细讲解:python深复制,浅复制与赋值语句的区别 1. '='赋值语句,常规复制只是将另一个变量名关联到了列表,并不进行副本复制,实例如下: var1=[12,35,67,91,101]var ...

随机推荐

  1. mysql explain中key_len值的说明

    在mysql 的explain的输出中,有个key_len的列,其数据是如何计算的呢? 在看到了淘宝的dba以前发布的博客后,我在mysql 5.6上操作一番,了解了一点. 环境准备 – 创建表. u ...

  2. Java NIO Buffer缓冲区

    原文链接:http://tutorials.jenkov.com/java-nio/buffers.html Java NIO Buffers用于和NIO Channel交互.正如你已经知道的,我们从 ...

  3. C++之Binary Heap/Max Heap

    #include <iostream> #include <time.h> #include <random> using namespace std; //Bin ...

  4. Jacob工具类使用文件互转服务 word转html html转excel word转pdf excel转pdf ppt转pdf

    前提条件  必须安装MS office 1.jdk使用jdk1.8 2.jacob.dll放在..\jdk1.8\jre\bin目录下 3.eclipse的jre版本要和jdk一致,window-&g ...

  5. CentOS 安装Python3.x常见问题

    CentOS 6.x自带的Python版本是2.6,CentOS 7.x上自带的是2.7,我们要自己安装Python3.X,配置环境,不过一般安装过程不会一帆风顺,往往有些报错,在CentOS以及其他 ...

  6. Can I use MyBatis to generate Dynamic SQL without executing it?

    Although MyBatis was designed to execute the query after it builds it, you can make use of it's conf ...

  7. ReactNative(三)——WebStorm的基本配置

    设置.js文件默认以jsx的语法打开 在没有进行设置的情况下,每次打开WebStorm的时候打开包含jsx语法的.js文件都会有以下提示: 当然我们点击转换后就可以了,但是每次都会提示,所以还是来一个 ...

  8. HTML5 CSS3 经典案例:无插件拖拽上传图片 (支持预览与批量) (二)

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/31513065 上一篇已经实现了这个项目的整体的HTML和CSS: HTML5 C ...

  9. HTTP/HTTPS 学习笔记

    超文本传输协议(HyperText Transfer Protocol) 伴随着计算机网络和浏览器的诞生,HTTP1.0也随之而来,处于计算机网络中的应用层,HTTP是建立在TCP协议之上的. HTT ...

  10. 用spark导入数据到hbase

    集群环境:一主三从,Spark为Spark On YARN模式 Spark导入hbase数据方式有多种 1.少量数据:直接调用hbase API的单条或者批量方法就可以 2.导入的数据量比较大,那就需 ...