python不确定层数的循环嵌套问题该怎么做

如题所述

def test_layers():
    layers = [[1,2],[11,12,13],[-1,-2]]
    shape = [len(layer) for layer in layers]
    offsets = [0] * len(shape)
    has_next = True
    while has_next:
        record = [layers[i][off] for i,off in enumerate(offsets)]
        print(record)
        for i in range(len(shape) - 1, -1, -1):
            if offsets[i] + 1 >= shape[i]:
                offsets[i] = 0  # 重置并进位
                if i == 0:
                    has_next = False  # 全部占满,退出
            else:
                offsets[i] += 1
                break
    print('complete')

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-04-16
b1=[[2]*3]*2
b2=[[2,2,2],[2,2,2]]
这个两个定义的变量其实时不一样的
b2一个list,包含两个list元素
b1是1个list元素的两个浅拷贝,可以理解成两个指向[2]*3的指针。
出现这种问题,实际上理解的误区,[2]*3 = [2,2,2] 就想当然的把[[2]*3]*2= [2,2,2]*2 = [[2,2,2] [2,2,2]]
其实[[]]是一个list的浅拷贝(或者理解成指向list指针)
更详细的可以看下python的文档,里面有说明。本回答被网友采纳
相似回答