经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Ruby » 查看文章
day06_步入百万年薪的第六天
来源:cnblogs  作者:SupSnake  时间:2019/7/15 9:00:24  对本文有异议

day06

小数据池

小数据池——缓存机制(驻留机制),只是一种规格,不会实际的开辟一个空间

  • == 判断两边内容是否相等 *****
  1. # a = 10
  2. # b = 10
  3. # print(a == b)
  • is 基于内存地址进行判断 *****
  1. # a = 10
  2. # b = 10
  3. # print(a is b) is判断基于内存地址进行判断
  4. # print(id(a))
  5. # print(id(b))

小数据池支持的对象也是:数字,字符串,布尔值

  • 小数据池的数字范围:-5——256*****
  • 字符串:在同一代码块下,只要内容相同就采用相同的内存地址

乘法的时候总长度不能超过20*****

乘法的时候中文,特殊符号乘以0

  • 布尔值:在同一代码块下,只要内容相同就采用相同的内存地址

小数据池的验证方法,必须脱离代码块才能进行验证

先执行代码块的规则,当代码块的规则不符合的时候再执行小数据池的规则(驻留机制)

  1. # a = -2.5 * 2
  2. # b = -2.5 * 2
  3. # print(id(a))
  4. # print(id(b))
  5. # print(a is b) # True
  6. # a = "alex你好" *2
  7. # b = "alex你好" *2
  8. # print(id(a))
  9. # print(id(b))
  10. # print(a is b) # True
代码块

一个文件,一个函数,一个类,一个模块,终端中每一行是一个代码块

支持的数据类型:数字,字符串,布尔值

  • 数字:在同一个代码块下,只要内容相同就采用相同的内存地址(比-5小的就不是)

数字在做乘法的时候范围: -5——256,不能使用浮点数 *****

  • 字符串:在同一代码块下,只要内容相同就采用相同的内存地址

乘法的时候总长度不能超过20 *****

乘法的时候中文,特殊符号乘以1或0

  • 布尔值:在同一代码块下,只要内容相同就采用相同的内存地址

深浅拷贝

面试必问:赋值,浅拷贝,深拷贝

赋值:

  1. # lst = [1,2,3,[5,6,7]]
  2. # lst1 = lst
  3. # print(lst1)
  4. # print(lst)
  5. # lst[-1].append(8)
  6. # print(lst1)
  7. # print(lst)
浅拷贝

拷贝:复制

浅拷贝的时候,只会开辟一个新的容器列表,其他元素使用的都是源列表中的元素

浅拷贝的时候只拷贝第一层元素

规则:

修改原列表里面的整体元素只有原列表改变,如果修改原列表里面的整体元素里面的元素,则两个都改变

修改新列表里面的整体元素只有新列表改变,如果修改新列表里面的整体元素里面的元素,则两个都改变

如果只是修改原列表或者新列表的整体元素,则改变的那个列表改变,另外一个不改变

  1. # lst1 = lst.copy() # 新开辟一个空间给lst1
  2. #
  3. # print(lst[-1])
  4. # print(lst1[-1])
  5. #
  6. # print(id(lst1[-1]))
  7. # print(id(lst[-1]))
  8. # 浅拷贝的时候,只会开辟一个新的容器列表,其他元素使用的都是源列表中的元素
  9. # lst = [1,2,3,[5,6,7]]
  10. # lst1 = lst.copy()
  11. # lst1[-1].append(8)
  12. # print(lst)
  13. # print(lst1)
  14. # lst = [1,2,3,[5,6,7]]
  15. # lst1 = lst.copy()
  16. # lst[3] = 567
  17. # print(lst1)
  18. # print(lst)
  19. # lst = [1,2,3,4,[5,6,7,[8,9]]]
  20. # lst1 = lst.copy() # [1,2,3,4,[5,6,7,[8,9]],10]
  21. # lst1.append(10)
  22. # print(lst)
  23. # print(lst1)
  24. # lst = [1,2,3,4,[5,6,7,[8,9]]]
  25. # lst1 = lst.copy()
  26. # lst1[-1][-1] = "56"
  27. # print(lst) # [1,2,3,4,[5,6,7,[8,9]]]
  28. # print(lst1) # ["56",2,3,4,[5,6,7,[8,9]]]
  29. # lst = [[1,2,],90,6,7,[5,6]]
  30. # lst1 = lst.copy()
  31. # lst1[-1] = 8
  32. # print(lst)
  33. # print(lst1)
  34. # dic = {"alex":[1,2,3,[5,6]]}
  35. # dic1 = dic.copy()
  36. # dic["alex"][0] = "56"
  37. # print(dic)
  38. # print(dic1)
深拷贝

需要导入:import copy

深拷贝开辟一个容器空间(列表),不可变数据类型公用,可变数据类型(再次开辟一个新的空间),空间里的值是不可变的值进行共用的,可变的数据类型再次开辟空间

  1. # import copy #导入
  2. # lst = [1,2,3,[5,6,7]]
  3. # lst1 = copy.deepcopy(lst) # 深拷贝
  4. # lst[-1].append(8)
  5. # print(lst)
  6. # print(lst1)
  7. # lst = [1,2,3,[5,6,7,[8,10,9]]]
  8. # import copy
  9. # lst1 = copy.deepcopy(lst)
  10. # print(id(lst[-1][-1]))
  11. # print(id(lst1[-1][-1]))

集合

集合 ——set 无序的——不支持索引

没有值的字典,天然去重

类似字典的键,可变类型不能放:列表、字典、集合不能放

  1. # 定义集合
  2. # s = {1,"alex",False,(1,2,3),12,1,12,4,6,32,2,4}
  3. # print(s)
  • add() :只能添加一个
  • update() :迭代添加
  1. # s = {1,2,3,4}
  2. # s.add("67") #只能添加一个
  3. # print(s)
  4. # s.update("今天") # 迭代添加
  5. # print(s)
  • pop() :随机删除,有返回值
  • remove(值) :指定删除
  • clear() :清空 ——set() 空集合
  1. # s = {1,2,3,4}
  2. # print(s.pop()) # pop有返回值
  3. # print(s)
  4. # s.remove(3) # 指定元素删除
  5. # print(s)
  6. # s.clear() # 清空 -- set() 空集合
  7. # print(s)

先删除再添加

for循环

  1. # for i in {1,2,3}:
  2. # print(i)

打印的时候是无序的,循环的是有序的

其他操作

交集:&

并集: |

差集: -

反交集:^

父集(超集): >

子集 : <099

frozenset() : 冻结集合

  1. # s1 = {1,2,3,4,5,6,7}
  2. # s2 = {5,6,7,1}
  3. # print(s1 & s2) # 交集
  4. # print(s1 | s2) # 并集
  5. # print(s1 - s2) # 差集
  6. # print(s1 ^ s2) # 反交集
  7. # print(s1 > s2) # 父集(超集)
  8. # print(s1 < s2) # 子集
  9. # print(frozenset(s1)) # 冻结集合 更不常用
  10. # dic = {frozenset(s1):1}
  11. # print(dic)

面试题:

  1. # 面试题:
  2. # lst = [1,2,1,2,4,2,45,3,2,45,2345,]
  3. # print(list(set(lst)))

原文链接:http://www.cnblogs.com/NiceSnake/p/11178242.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号