• python学习笔记 day15 作业讲解


    def extendList(val,list=[]):   #陷阱问题,默认参数传进去的是可变数据类型list
        list.append(val)
        return list
    list1=extendList(10)       #使用的默认的,所以现在原函数中默认参数那个空列表已经变为[10]
    print(list1)
    list2=extendList(123,[])   #给list传了一个新的空列表,里面放的元素是123(不是函数定义处的那个空列表,是新的)
    list3=extendList('a')      #使用默认参数中的list,这个list在list1处已经往list中加了一个10,现在又加了一个a,所以变为[10,'a']
    print(list1)               #由于是在list3往默认参数中的列表加值之后才打印的list1所以,这里的list1也变了,
    print(list2)
    print(list3)

    运行结果:

    就是list1在执行完extendList(10)之后确实列表中的元素只有一个10,但是,list1和list3和原定义函数处的list指向的是同一个列表,(返回的是内存地址),后面再对这个列表进行append,list1也是会变化的,如果list1得到之后立即打印,就是[10],但是执行完list3之后再打印,它里面的列表已经又增加了一个元素,所以此时的list1和list3指向同一个内存地址,里面的元素当然也是一样的啦!

     2.请写出一段python代码,实现删除一个list里面的重复元素:

    当然比较简单的方法就是使用集合set(L),但是转为set的一瞬间就变为无序啦!

    def func():
        L=[1,2,3,2,1,3,3,1,2,3,2,2,1]
        index=0
        while index<len(L):
            if L[index] in L[:index]:
                L.remove(L[index])
            else:
                index+=1
            print(L)
        return L
    L=func()

    运行结果:

    版本二(Eva-J)

    L=[1,2,3,2,1,2,4,3,2,64,32,2,5,4,3,5]
    L1=[]
    for i in L:
        if i not in L1:
            L1.append(i)
    print(L1)

    运行结果:

    talk is cheap,show me the code
  • 相关阅读:
    《C++ 并发编程》- 第1章 你好,C++的并发世界
    30分钟,让你成为一个更好的程序员
    程序员技术练级攻略
    谈新技术学习方法-如何学习一门新技术新编程语言
    计算机科学中最重要的32个算法
    程序员学习能力提升三要素
    一位在MIT教数学的老师总结了十条经验
    学习算法之路
    十个顶级的C语言资源助你成为优秀的程序员
    Linux中LoadAverage分析
  • 原文地址:https://www.cnblogs.com/xuanxuanlove/p/9603901.html
Copyright © 2020-2023  润新知