Python学习问题集锦_1
最近暑假跟着学校老师学深度学习,安好了anaconda, pytorch,把玩了jupytor notebook,最后不得不搞这个只听过没看过的python。接触下来的确很多地方由于语法的问题写起来、看起来比C++要舒服很多,不过也有很多新问题需要吐槽,仅以此文加以纪念,可能更新,随缘
首先必须提一下让我起意写这玩意儿的动机,在友学题的时候,有一个修复照片的,思路很简单,一个二维数组循环遍历更新数据,但是,啊,就总要出点幺蛾子。
关于列表深拷贝与浅拷贝的事
对于一个列表a,我们不妨将其定义为:a = [[0,0,0] for i in range(5)]
,是五个[0,0,0]的复制。在python中,如果你用b=a[0]
的方式进行拷贝,默认是浅拷贝,相当于给你整了个指针的引用,任何在b
上发生的修改由于指针相同,都会反应在a[0]
上。
最为清爽直接的方法莫过于直接调用deepcopy()
方法:
b = a[0].deepcopy()
相对于其他方法,比如说切片、copy()
、for循环,都是对于第一层list做深拷贝,但是如果是list的嵌套,内层list仍是浅拷贝。
关于列表的操作 + +=
对于一维列表而言,这个+=就是把后来的列表褪掉一层再加进去。但是对于高维列表而言,不论你是对哪一个分量进行操作,对于高维列表中的每一个一级子列表,都会做相同的操作。
如果想只对列表中的一个子列表进行操作,我目前找到的方法就是L[0] = L[0] + [1]
我目前还不清楚导致这种现象出现的原因,希望能有大神在评论中提醒!!
to be continued…
python吃我压路机 😃