Python中的array[:]表示什么意思?记录一个幺蛾子

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[:])

拜拜。

你可能感兴趣的:(python,列表,list,内存)