zoukankan      html  css  js  c++  java
  • Python习题


    1.用算法判断某⼀一个字符串串是否是⼩小数

    s17 = "-123.12"
    s17 = s17.replace("-", "") #替换掉负号
    if s17.isdigit():
        print("是整数")
    else:
        if s17.count(".") == 1 and not s17.startswith(".") and not s17.endswith("."):
            print("是⼩数")
        else:
            print("不不是⼩小数")


    2.循环删除列列表中的每⼀一个元素

       分析: for的运⾏行行过程. 会有⼀一个指针来记录当前循环的元素是哪⼀一个, ⼀一开始这个指针指向第0 个. 然后获取到第0个元素. 紧接着删除第0个. 这个时候. 原来是第⼀一个的元素会⾃自动的变成 第0个. 然后指针向后移动⼀一次, 指向1元素.  这时原来的1已经变成了了0, 也就不会被删除了;循环删除都不行. 不论是⽤用del还是⽤用remove.pop都不行.

    li = [11, 22, 33, 44]
    for e in li:
        li.remove(e)
    print(li)
    li = [11, 22, 33, 44]
    for el in li:
        li.pop()    # pop也不不⾏行行
    print(li)
    li = [11, 22, 33, 44]
    for i in range(0, len(li)):
        del li[i]
    print(li)
    # i= 0, 1, 2  删除的时候li[0] 被删除之后. 后⾯面⼀一个就变成了了第0个. 
    # 以此类推. 当i = 2的时候. list中只有⼀一个元素. 但是这个时候删除的是第2个 肯定报错啊

    结果[22,44]

    li = [11, 22, 33, 44]
    for i in range(0,len(li)):   # 循环len(li)次, 然后从后往前删除
        li.pop()
    print(li)
     或者使用whlie循环,由于删除元素会导致元素的索引改变, 所以容易易出现问题. 尽量量不要再循环中直接去删 除元素. 可以把要删除的元素添加到另⼀一个集合中然后再批量量删除. 
    .
    count = len(li)
    while count > 0:
        count = count - 1 #倒着删除
        del li[count]
    
    print(li)


    3.fromkeys与append连续使用时的错误
       分析:代码中只是更更改了了jay那个列列表. 但是由于jay和JJ⽤用的是同⼀一个列列表. 所以. 前⾯面那个改了了. 后 ⾯面那个也会跟着改
    dic = dict.fromkeys(["jay", "JJ"], ["周杰伦", "麻花藤"])
    print(dic)
    lst = dic.get('jay').append("湖大")
    print(dic)
    
    结果:
    {'jay': ['周杰伦', '麻花藤'], 'JJ': ['周杰伦', '麻花藤']}
    {'jay': ['周杰伦', '麻花藤', '湖大'], 'JJ': ['周杰伦', '麻花藤', '湖大']}

        假设开始定义了dic 则不会出现这个错误,

    dic = {'jay': ['周杰伦', '麻花藤'], 'JJ': ['周杰伦', '麻花藤']}
    print(dic)
    lst = dic.get('jay').append("湖大")
    print(dic)
    
    结果:
    {'jay': ['周杰伦', '麻花藤'], 'JJ': ['周杰伦', '麻花藤']}
    {'jay': ['周杰伦', '麻花藤', '湖大'], 'JJ': ['周杰伦', '麻花藤']}

    4. 循环删除字典的元素

    dict中的元素在迭代过程中是不允许进⾏行行删除的,把要删除的元素暂时先保存在⼀一个list中, 然后循环list, 再删除

    dic = {'k1': 'alex', 'k2': 'wusir', 's1': '⾦金金⽼老老板'}
    # 删除key中带有'k'的元素
    for k in dic:
        if 'k' in k:
            del dic[k]
    # 在循环迭 代的时候不不允许进⾏行行删除操作
    print(dic)

    把要删除的元素暂时先保存在⼀一个list中, 然后循环list, 再删除

    dic = {'k1': 'alex', 'k2': 'wusir', 's1': '⾦金金⽼老老板'}
    dic_del_list = []
    # 删除key中带有'k'的元素
    for k in dic:
        if 'k' in k:
            dic_del_list.append(k)
    for el in dic_del_list:
        del dic[el]
    print(dic)

    5. set 元素变更 无法直接修改,只能结合remove和add  使用

    6  对于list, set, dict来说, 直接赋值. 其实是把内存地址交给变量量. 并不是复制⼀一份内容. 所以. lst1的内存指向和lst2是⼀一样的. lst1改变了了, lst2也发⽣生了了改变

    lst1 = ["⾦金金⽑毛狮王", "紫衫⻰龙王", "⽩白眉鹰王", "⻘青翼蝠王"]
    lst2 = lst1
    print(lst1)
    print(lst2)
    lst1.append("杨逍")
    print(lst1)
    print(lst2)
    
    dic1 = {"id": 123, "name": "谢逊"}
    dic2 = dic1
    print(dic1)
    print(dic2)
    dic1['name'] = "范瑶"
    print(dic1)
    print(dic2)
    
    结果如下:
    ['⾦金金⽑毛狮王', '紫衫⻰龙王', '⽩白眉鹰王', '⻘青翼蝠王']
    ['⾦金金⽑毛狮王', '紫衫⻰龙王', '⽩白眉鹰王', '⻘青翼蝠王']
    ['⾦金金⽑毛狮王', '紫衫⻰龙王', '⽩白眉鹰王', '⻘青翼蝠王', '杨逍']
    ['⾦金金⽑毛狮王', '紫衫⻰龙王', '⽩白眉鹰王', '⻘青翼蝠王', '杨逍']
    {'id': 123, 'name': '谢逊'}
    {'id': 123, 'name': '谢逊'}
    {'id': 123, 'name': '范瑶'}
    {'id': 123, 'name': '范瑶'}

        尝试 copy[浅拷⻉. 只会拷贝第⼀层. 第⼆层(也就是嵌套的列表元素)的内容不会拷贝. 所以被称为浅拷⻉贝,简单说 嵌套的改变,那也会一起改变]和deepcopy[不会因任何改变而改变]

    lst1 = ["何炅", "杜海海涛","周渝⺠民"]
    lst2 = lst1.copy()
    lst1.append("李李嘉诚")
    print(lst1)
    print(lst2)
    print(id(lst1),id(lst2))
    结果如下:
    ['何炅', '杜海海涛', '周渝⺠民', '李李嘉诚']
    ['何炅', '杜海海涛', '周渝⺠民']
    1793001742920 1793001742984
                                                                             














































































  • 相关阅读:
    DataAnnotations
    使用BizTalk实现RosettaNet B2B So Easy
    biztalk rosettanet 自定义 pip code
    Debatching(Splitting) XML Message in Orchestration using DefaultPipeline
    Modifying namespace in XML document programmatically
    IIS各个版本中你需要知道的那些事儿
    关于IHttpModule的相关知识总结
    开发设计的一些思想总结
    《ASP.NET SignalR系列》第五课 在MVC中使用SignalR
    《ASP.NET SignalR系列》第四课 SignalR自托管(不用IIS)
  • 原文地址:https://www.cnblogs.com/rango0550/p/10215941.html
Copyright © 2011-2022 走看看