• python 编程


    1、一个str A,列表B的所有元素都在A中时返回True

     A = 'HeooWoldHomeUbuntuCentOSFedora'
    B = ['Ubuntu', 'CentOS', 'Home', 'Mint']

    方法一: result = [b for b in B if b in A ] == B    返回B中符合条件的值列表与B进行比较

     
    方法二: 赞
    from functools import reduce  # python3 reduce需要先导入
    reduce(lambda x,y:x and y, [s in A for s in B])   #  [s in A for s in B] 是一个True,False 列表,高阶函数reduce 将列表中值分别相与 
     
    方法三:
    def f():
    for b in B:
    if b not in A:
    return False
    return True
    效率比较高,如果有False ,不用全部遍历
     
     2 、赋值与浅拷贝
    i=1
    loc=['abc']
    while i <= 3:
    #print(loc)
    temp = loc
    temp[0] = loc[0] + '[{}]'.format(i)
    print(temp)
    #print(loc)
    i = i + 1
    结果如下:

    ['abc[1]']
    ['abc[1][2]']
    ['abc[1][2][3]']

     发现temp变化后,loc也会随着变化。因为temp =loc,直接赋值,在python中,一切皆对象,对象的赋值操作就是对象的引用,temp如同loc的别名。
     
    改成如下:temp=loc[:],切片操作,会生成一个新列表temp,切片操作属于浅拷贝,浅拷贝会创建新对象,其内容是原对象的引用。
     

            浅拷贝有三种形式:切片操作,工厂函数,copy模块中的copy函数

            比如对上述list_a,        

            切片操作:list_b = list_a[:]   或者 list_b = [each for each in list_a]

            工厂函数:list_b = list(list_a)

            copy函数:list_b = copy.copy(list_a)

    对于非容器类型,如数字,字符,以及其它“原子”类型,没有拷贝一说。产生的都是原对象的引用。

    可参考:https://blog.csdn.net/solariens/article/details/53527373

     3、输出如下数列在 1000000 以内的值,以逗号分隔:k(0)= 1, k(1)=2, k(n) = k(n–1)2 + k(n–2)2,其中,k(n) 表示该数列

     常规思路:递归

    推荐:

     4、

    问题1:请编写程序,统计该文件中出现的所有中文字符及标点符号的数量,每个字符及数量之间用冒号:分隔,例如“笑:1024”,将所有字符及数量的对应采用逗号分隔,以CSV文件格式保存到“笑傲江湖-字符统计.txt”文件中。注意,统计字符不包括空格和回车。

    fi = open("笑傲江湖-网络版.txt", "r", encoding='utf-8')
    fo = open("笑傲江湖-字符统计.txt", "w", encoding='utf-8')
    txt = fi.read() # 
    d = {}
    for c in txt:
        d[c] = d.get(c, 0) + 1 # d.get(a,b),如果字典中没有键a,则返回b;如果有键a,则返回字典中a的值。
    del d[' ']
    del d['
    ']
    ls = []
    for key in d:
        ls.append("{}:{}".format(key, d[key]))
    fo.write(",".join(ls))
    fi.close()
    fo.close()

    问题2:请编写程序,统计“笑傲江湖-网络版.txt”中出现在引号内所有字符占文本总字符的比例,采用如下方式打印输出:

    用程序运行结果的真实数字替换上述示例中数字,均保留整数,字符串中标点符号采用中文字符。

    fi = open("笑傲江湖-网络版.txt", "r", encoding='utf-8')
    txt = fi.read()
    cnt = 0
    flag = False
    for c in txt:
        if c == "“":
            flag = True
            continue
        if c == "”":
            flag = False
        if flag:
            cnt += 1
    print("占总字符比例:{:.0%}。".format(cnt/len(txt)))
    fi.close()
  • 相关阅读:
    [置顶] 新修改ADB,支持Android 4.2 系统 ,全部中文命令,手机屏幕截图等等
    归并排序
    Sciter/HTMLayout内存占用评测
    ASP.NET面试题总结
    uva 1356 Bridge ( 辛普森积分 )
    在没备份undo的情况下,undo丢失,重启数据库报ORA-01157错误
    以天徒龙记
    struts-config.xml 文件:
    struts.xml文件:
    web.xml文件:
  • 原文地址:https://www.cnblogs.com/who-care/p/9111282.html
Copyright © 2020-2023  润新知