zoukankan      html  css  js  c++  java
  • 5.18 每日小三练

    简述Python的字符串驻留机制?

    含义:字符串驻留是一种在内存中仅保存一份相同且不可变字符串的方法(Python的驻留机制对相同的字符串只保留一份拷贝,后续创建相同字符串时,不会开辟新空间,而是把该字符串的地址赋给新创建的变量),类似数据库的存储过程。

    使用方法:1>系统维护interned字典,记录已被驻留的字符串对象。

                      2>当字符串对象a需要驻留时,先在interned检测是否存在,若存在则指向存在的字符串对象,a的引用计数减1;若不存在,则记录a到interned中。

    什么时候会用到字符串驻留机制:1>字符串长度为0或1时,默认采用驻留机制。

                                                          2>字符串长度大于1时,且字符串中只包含大小写字母、数字、下划线时,采用驻留机制。

                                                          3>字符串只在编译时进行驻留,而非运行时(.pyc文件)。

                                                          4>用乘法得到的字符串,如果结果长度 <=20且字符串只包含数字、字母大小写、下划线,支持驻留。长度>20,不支持驻留。这样的设计目的是为了保护.pcy文件不会被错误代码搞的过大。

                                                          5>对于[-5,256]之间的整数数字,Python默认驻留。

                                                          6>Pyhton提供intern方法强制2个字符串指向同一个对象。

    Python 一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。

    import math
     
    for i in range(2, 1000):
        factors = []  #i 每次循环都清空
        for j in range(1, math.floor(i/2)+1):
            if i%j == 0:
                factors.append(j)
        if sum(factors) == i:
    print(i, end=',')

    如何在Python中拷贝一个对象, 并说明他们之间的区别?

    有三种方法:赋值、浅拷贝、深拷贝

    区别:

    赋值:只是复制了新对象的引用,不会开辟新的内存空间。

    浅拷贝:创建新对象,其内容是原对象的引用。

    #三种方法:
    """
    #切片操作:
    lst = [1,2,3,[4,5]] 
    lst1 = lst[:]    #或者:lst1 = [each for each in lst]
    """
    
    """
    #工厂函数:
    lst = [1,2,3,[4,5]] 
    lst1 = list(lst)
    """
    
    #copy函数
    lst = [1,2,3,[4,5]] 
    lst1 = copy.copy(lst)

    浅拷贝之所以称为浅拷贝,是它仅仅只拷贝了一层,在lst中有一个嵌套的list[4,5],如果我们修改了它,情况就不一样了。

    深拷贝:只有一种形式,copy模块中的deepcopy函数; 和浅拷贝对应,深拷贝拷贝了对象的所有元素,包括多层嵌套的元素;深拷贝出来的对象是一个全新的对象,不再与原来的对象有任何关联。(copy.deepcopy

    1. #1.外层添加元素时, 浅拷贝c不会随原列表a变化而变化;内层list添加元素时,浅拷贝c才会变化。
    2. #2.无论原列表a如何变化,深拷贝d都保持不变。
    3. #3.赋值对象随着原列表一起变化
  • 相关阅读:
    ASP.NET缓存页面
    SQL2005没有服务端开启程序
    Cookie创建以及清除Cookie数组
    http 错误编号大全(转)
    .net 控件库名称
    window.location.hash属性介绍
    CSS半透明滤镜在FIREFOX和IE下面的能够通用的写法
    兼容性问题
    Js获取窗体大小
    springcloud 微服务分布式 flowable 工作流 前后分离vue.js 集成代码生成器 shiro权限
  • 原文地址:https://www.cnblogs.com/ljy123/p/12913814.html
Copyright © 2011-2022 走看看