python第五天

python第五天

id is ==

# id 身份证号
# i = 100
# s = 'alex'
# print(id(i))
# print(id(s))
# == 比较的是两边的值是否相等
# l1 = [1, 2, 3]
# l2 = [1, 2, 3]
# print(l1 == l2)
# s1 = 'alex'
# s2 = 'alex '
# print(s1 == s2)

# is 判断的是内存地址是否相同
# l1 = [1, 2, 3]
# l2 = [1, 2, 3]
# print(id(l1))
# print(id(l2))
# print(l1 is l2)

s1 = 'alex'
s2 = 'alex'
print(id(s1))
print(id(s2))
print(s1 is s2)

# id 相同,值一定相同
# 值相同,id不一定相同

代码块

  • 代码块:我们所有的代码都需要依赖代码块执行。

  • 一个文件就是一个代码块。

  • 交互式命令下一行就是一个代码块。

  • 两个机制: 同一个代码块下,有一个机制。不同的代码块下,遵循另一个机制。

  • 同一个代码块下的缓存机制。

    • 前提条件:同一个代码块内。
    • 机制内容:pass
    • 适用的对象: int bool str
    • 具体细则:所有的数字,bool,几乎所有的字符串。
    • 优点:提升性能,节省内存。
  • 不同代码块下的缓存机制: 小数据池。

    • 前提条件:不同代码块内。

    • 机制内容:pass

    • 适用的对象: int bool str

    • 具体细则:-5~256数字,bool,满足规则的字符串。

    • 优点:提升性能,节省内存。

      # i1 = 1000
      # i2 = 1000
      # i3 = 1000
      # l1 = [1,2,3]
      # l2 = [1,2,3]
      # print(id(l1))
      # print(id(l2))
      # print(id(i1))
      # print(id(i2))
      # print(id(i3))
      
      i = 800
      i1 = 800
      s1 = 'hfdjka6757fdslslgaj@!#fkdjlsafjdskl;fjds中国'
      s2 = 'hfdjka6757fdslslgaj@!#fkdjlsafjdskl;fjds中国'
      print(i is i1)
      print(s1 is s2)
      
      1. 总结:+
        1. 面试题考。
        2. 回答的时候一定要分清楚:同一个代码块下适用一个缓存机制。不同的代码块下适用另一个缓存机制(小数据池)
        3. 小数据池:数字的范围是-5~256.
        4. 缓存机制的优点:提升性能,节省内存。
      2. python基础数据类型之:集合 set。容器型的数据类型,它要求它里面的元素是不可变的数据,但是它本身是可变的数据类型。集合是无序的。{}。
        • 集合的作用:
          • 列表的去重。
          • 关系测试: 交集,并集,差集,.....
          • pass
# 集合的创建:
# set1 = set({1, 3, 'Barry', False})
# set1 = {1, 3, '太白金星', 4, 'alex', False, '武大'}
# print(set1)

# 空集合:
# print({}, type({}))  # 空字典
# set1 = set()
# print(set1)

# 集合的有效性测试
# set1 = {[1,2,3], 3, {'name': 'alex'}}
# print(set1)

# set1 = {'太白金星', '景女神',  '武大', '三粗', 'alexsb', '吴老师'}
# 增:
# add
# set1.add('xx')
# print(set1)

# update迭代着增加
# set1.update('fdsafgsd')
# print(set1)

# 删
# remove
# remove 按照元素删除
# set1.remove('alexsb')
#
# print(set1)
# pop 随即删除
# set1.pop()
# print(set1)

# 变相改值
# set1.remove('太白金星')
# set1.add('男神')
# print(set1)

#关系测试:***
#  交集
# set1 = {1, 2, 3, 4, 5}
# set2 = {4, 5, 6, 7, 8}
# print(set1 & set2)

# 并集:
# print(set1 | set2)

# 差集 -
# print(set1 - set2)

# 反交集
# print(set1 ^ set2)

# 子集
# set1 = {1,2,3}
# set2 = {1,2,3,4,5,6}
# # print(set1 < set2)
#
# # 超集
# print(set2 > set1)


# 列表的去重 ***
# l1 = [1,'太白', 1, 2, 2, '太白',2, 6, 6, 6, 3, '太白', 4, 5, ]
# set1 = set(l1)
# l1 = list(set1)
# print(l1)

# 用处:数据之间的关系,列表去重。
  • 深浅copy
# 赋值运算
# l1 = [1, 2, 3, [22, 33]]
# l2 = l1
# l1.append(666)
# print(l1)
# print(l2)

# 浅copy
# l1 = [1, 2, 3, [22, 33]]
# l2 = l1.copy()
# l1.append(666)
# print(l1,id(l1))
# print(l2,id(l2))


# l1 = [1, 2, 3, [22, 33]]
# l2 = l1.copy()
# l1[-1].append(666)
# print(id(l1[-1]))
# print(id(l2[-1]))
# print(id(l1[0]))
# print(id(l2[0]))
# print(l1)
# print(l2)


# l1 = [1, 2, 3, [22, 33]]
# l2 = l1.copy()
# l1[0] = 90
# print(l1)
# print(l2)



# 深copy
# import copy
# l1 = [1, 2, 3, [22, 33]]
# l2 = copy.deepcopy(l1)
# # print(id(l1))
# # print(id(l2))
# l1[-1].append(666)
# print(l1)
# print(l2)



# 相关面试题;
# l1 = [1, 2, 3, [22, 33]]
# l2 = l1[:]
# l1[-1].append(666)
# print(l1)
# print(l2)
# 浅copy: list dict: 嵌套的可变的数据类型是同一个。
# 深copy: list dict: 嵌套的可变的数据类型不是同一个 。
原文地址:https://www.cnblogs.com/styxr/p/12158368.html