• 将二维数据转化为一位数组(多重生成器小结)


    嵌套生成器方法:

    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]

  • 相关阅读:
    Reverses CodeForces
    Palindrome Partition CodeForces
    Victor and String HDU
    Harry and magic string HDU
    Interesting HDU
    I Love Palindrome String HDU
    Substring UVA
    小明系列故事――女友的考验 HDU
    Walk Through Squares HDU
    使用ionic来build安卓apk时,报CordovaError: Requirements check failed for JDK 1.8 or greater
  • 原文地址:https://www.cnblogs.com/luocodes/p/13378992.html
Copyright © 2020-2023  润新知