嵌套生成器方法:
ab = [[1,2,3], [5,8,9,0], [7,8,9]] print([i for item in ab for i in item]) #[1, 2, 3, 5, 8, 9, 0, 7, 8, 9]
原理:将ab二维数组先转换成生成器,在将这个生成器继续转换成更细(一维)的生成器
同理,也可将三维数组转换成二维数组
ab = [[[1,2,3], [5,8,9,0], [7,8,9]],[[1,1,1], [5,8,9,0], [7,8,9]]] print([i for item in ab for i in item]) #[[1, 2, 3], [5, 8, 9, 0], [7, 8, 9], [1, 1, 1], [5, 8, 9, 0], [7, 8, 9]]
所以我们也可将三维数组转换成一维数组
ab = [[[1,2,3], [5,8,9,0], [7,8,9]],[[1,1,1], [5,8,9,0], [7,8,9]]] print([x for item in ab for i in item for x in i]) #[1, 2, 3, 5, 8, 9, 0, 7, 8, 9, 1, 1, 1, 5, 8, 9, 0, 7, 8, 9]
如果参数变成这样呢?
ab = [[1,2,3], [4,5], [7,8,9]] print([i for i in ab for x in i]) #[[1, 2, 3], [1, 2, 3], [1, 2, 3], [4, 5], [4, 5], [7, 8, 9], [7, 8, 9], [7, 8, 9]]
当生成器又产生新的生成器,那么不管有没有改变他原有的生成器,都会使原有的生成器增加它本身长度的倍数。
例:[1,2,3]的长度为3,那么两遍生成器后就为[1, 2, 3], [1, 2, 3], [1, 2, 3]