zoukankan      html  css  js  c++  java
  • 深浅拷贝问题

    一、深浅拷贝

      1.浅拷贝

        浅copy:是把原列表第一层的内存地址不加区分完全copy一份给新列表

        

        1.对于不可变类型的赋值,都是产生了新值,让原列表的索引指向新的内存地址,不会影响新列表
        2.但对于可变类型,我们可以改变可变类型中包含的值,但内存地址不变即原列表的索引指向仍然指向原来的内存地址,于是新列表也跟着一起受影响!

      2.深拷贝

          深拷贝:要想copy得到的新列表与原列表的改操作完全独立开必须有一种可以区分开可变类型与不可变类型的copy机制,这就是深copy

        

    二、while循环

      1.循环的语法与基本使用  

    print(1)
    while 条件:
         代码1
         代码2
         代码3
    print(3)

      2.死循环与效率问题

    while True:
    name=input('your name >>>> ')print(name)
     纯计算无io的死讯会导致致命的效率问题
     while True:
         1+1

      3.退出循环的两种方式

        1.条件为False

    tag=True
    while tag:
        inp_name=input('请输入您的账号:')
        inp_pwd=input('请输入您的密码:')
    
        if inp_name  == username and inp_pwd == password:
            print('登录成功')
            tag = False # 之后的代码还会运行,下次循环判断条件时才生效
        else:
            print('账号名或密码错误')

        2.break,只要运行到break就会立刻终止本层循环

    while True:
        inp_name=input('请输入您的账号:')
        inp_pwd=input('请输入您的密码:')
        if inp_name  == username and inp_pwd == password:
            print('登录成功')
            break # 立刻终止本层循环
       else:
           print('账号名或密码错误')

      4.while循环的嵌套与结束

    tag=True
    while tag:
        while tag:
            while tag:
                tag=False
    
    
    # 每一层都必须配一个break
    while True:
        while True:
            while True:
                break
            break
        break

      5.while +continue:结束本次循环,直接进入下一次

          强调:在continue之后添加同级代码毫无意义,因为永远无法运行
    count=0
    while count < 6:
        if count == 4:
            count+=1
            continue
           # count+=1 # 错误
        print(count)
        count+=1

      6.while +else:针对break

    count=0
    while count < 6:
        if count == 4:
            count+=1
            continue
        print(count)
        count+=1
    else:
        print('else包含的代码会在while循环结束后,并且while循环是在没有被break打断的情况下正常结束的,才不会运行')
    
    count=0
    while count < 6:
        if count == 4:
            break
        print(count)
        count+=1
    else:
        print('======>')
  • 相关阅读:
    C++ 动态库导出函数名“乱码”及解决
    ASP.NET 4.5 Bundle组件(捆绑、缩小静态文件)
    MVC4 + WebAPI + EasyUI + Knockout-授权代码维护
    关于Grunt可视化的尝试
    Object-c学习之路三(@class与#import的区别)
    2.1 以指定的次序返回查询结果
    进程序名得到进程ID和句柄与进程的公司名(使用快照和GetPeFileCompany和VerQueryValueW等函数)
    在资源里面画出你的界面
    VS2008下WinRar源码生成dll和 lib总结
    进程占用百分百CPU不卡(从未试过,当别的程序运行的时候,当前程序还会运行吗?)
  • 原文地址:https://www.cnblogs.com/qjk95/p/12449919.html
Copyright © 2011-2022 走看看