Как преобразовать вложенный массив 2D в массив 2D? - PullRequest
0 голосов
/ 07 марта 2019

У меня есть массив a следующим образом: [[(0,0),(2,0)],[(1,1)], [(3,8)]]

Так что теперь я хочу преобразовать это так: [(0,0),(2,0),(1,1), (3,8)]

Как мне это сделать?

Я попробовал приведенный ниже код и успешно, но мне нужны идеи лучше и быстрее.

nresult = []
for i in range(len(result)):
    arr = result[i]
    for j in range(len(arr)):
        nresult.append(arr[j])

Может кто-нибудь мне помочь?

Спасибо!

Ответы [ 3 ]

1 голос
/ 07 марта 2019

Если ваш nested-deep уверен, вы можете использовать chain из itertools package

from itertools import chain

data = [[(0,0),(2,0)],[(1,1)], [(3,8)]]

result = list(chain(*data))
1 голос
/ 07 марта 2019

Вы можете использовать reduce из functools вот так

from functools import reduce

a = [[(0,0),(2,0)],[(1,1)], [(3,8)]]
res = reduce(lambda x,y: x+y,a)

print(res) # [(0, 0), (2, 0), (1, 1), (3, 8)]
0 голосов
/ 07 марта 2019

Вы можете использовать списочные выражения -

nested = [[(0,0),(2,0)],[(1,1)], [(3,8)]]
un_nested = [inside_element for element in nested for inside_element in element]
# Returns - [(0, 0), (2, 0), (1, 1), (3, 8)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...