hi诸位大佬,在列表的使用中有很多高大上的用法,比如array[::-1]表示倒过来,array[:]表示什么意思呢?估计有的大佬就在脚本打印了一下试试,试试也是如下的结果,根本没啥用????!!!甚至还会反问我一句“你在说啥?”
For Recommendation in Deep learning QQ Group 277356808
For deep learning QQ Second Group 629530787
I'm here waiting for you
不接受这个网页的私聊/私信!!!
欢迎关注微信视频号、快手:小明哥直播间
1-举例子如下:
>>> k=[8,4,3,2]
>>> k[:]
[8, 4, 3, 2]
而我的例子如下:【直接赋值并没有开辟新的内存空间,更改后原来空间的值也变了】
>>> k2=k[:]
>>> k2[0]=9
>>> k
[8, 4, 3, 2]
>>> k3=k
>>> k3[0]=9
>>> k3
[9, 4, 3, 2]
>>> k
[9, 4, 3, 2]
至少k[:]开辟了新的存储空间,或者说这种赋值方式可以开辟新的存储空间。【或者指针的解释】
2-实际例子-回溯法中的使用
def perfect(array):
def func(pos,end):
if pos==end:
res.append(array)
print(array)
for i in range(pos,end):
array[i],array[pos]=array[pos],array[i]
func(pos+1,end)
array[i],array[pos]=array[pos],array[i]
res=[]
func(0,len(array))
return res
>>> arr
[1, 2, 3, 4]
>>> perfect(arr)
[1, 2, 3, 4]
[1, 2, 4, 3]
[1, 3, 2, 4]
[1, 3, 4, 2]
[1, 4, 3, 2]
[1, 4, 2, 3]
[2, 1, 3, 4]
[2, 1, 4, 3]
[2, 3, 1, 4]
[2, 3, 4, 1]
[2, 4, 3, 1]
[2, 4, 1, 3]
[3, 2, 1, 4]
[3, 2, 4, 1]
[3, 1, 2, 4]
[3, 1, 4, 2]
[3, 4, 1, 2]
[3, 4, 2, 1]
[4, 2, 3, 1]
[4, 2, 1, 3]
[4, 3, 2, 1]
[4, 3, 1, 2]
[4, 1, 3, 2]
[4, 1, 2, 3]
[[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]
直接打印就是array交换位置后的结果(当时立刻就取完了所有值),而取该变量则只记录了内存的指针(可能涉及引用&与指针令人讨厌) ,并没有记录完整的内存的值,这样的结果肯定是执行完所有关于array的交换位置后的结果。要证实我说的正确,那么只需打印最后array的值,若此时res结果恰好为array的值,那么我的猜想即是正确的(这符合物理学假设推演),下面验证:
>>> arr
[1, 2, 3, 4]
res中全是arr的最终结果。
2021120501:06
【120521:01补充】
将上面的修改为如下即可:array[:]即表示取当时所有值,而array只是指针。
res.append(array[:])
拜拜。