首頁  >  問答  >  主體

python2.x如何列表推导二维数组?

>>> a = [[1, 2, 3], [4, 5, 6]]
>>> b = [x for x in i for i in a]
>>> b
[1, 1, 2, 2, 3, 3]
>>> c = [x for x in i for i in a] 
>>> c
[4, 4, 5, 5, 6, 6]
  1. 如何解释上面代码的运行结果?
    一般的得到的结果是[4, 4, 5, 5, 6, 6],但是偶然会得到[1, 1, 2, 2, 3, 3],这是为什么呢?

  2. 如何把[[1, 2, 3], [4, 5, 6]]用列表推导成[1,2,3,4,5,6]的形式?

伊谢尔伦伊谢尔伦2718 天前879

全部回覆(3)我來回復

  • 迷茫

    迷茫2017-04-17 15:16:04

    b = [x for x in i for i in a] 在我的解釋器中無法運作.

    如何把[[1, 2, 3], [4, 5, 6]]用列表推導成[1,2,3,4,5,6]的形式?

    >>> b = [item for sublist in a for item in sublist]
    >>> b
    [1, 2, 3, 4, 5, 6]
    

    flatten 在stack overflow 上有詳細的討論, 上面的方法被發現是最快的,

    回覆
    0
  • 高洛峰

    高洛峰2017-04-17 15:16:04

    a = [[1, 2, 3], [4, 5, 6]]
    all = []
    for i in a:
        all += i
    

    沒想到更簡潔的方法。

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-17 15:16:04

    在 [5] 中:b = [x for i in a for x in i]

    在[6]中:b
    輸出[6]: [1, 2, 3, 4, 5, 6]

    三維圖的
    在[7]: aa = [[[1], [2], [3]], [[4], [5], [6]]]
    在[8]中:b = [y for i in aa for x in i for y in x]

    在[9]中:b
    輸出[9]: [1, 2, 3, 4, 5, 6]

    回覆
    0
  • 取消回覆