Разбейте подсписки с помощью Python

#python #list #sublist #reorganize

#python #Список #подсписок #реорганизовать

Вопрос:

Вот список, который я хочу разбить:

     List A = [[[[0, 1], [2, 3]], [[0, 2], [1, 3]], [[0, 3], [1, 2]]], [[[0, 2], [1, 3]], [[0, 3], [1, 2]], [[0, 2], [1, 3]]]]
  

Список A имеет 2 подсписка, каждый из которых содержит 3 пары координат. Мне интересно, мог бы я сохранить порядок этих координат, но перегруппировать пару координат в виде подсписка. Итак, вот желаемый результат:

     List B = [[[0, 1], [2, 3]], [[0, 2], [1, 3]], [[0, 3], [1, 2]], [[0, 2], [1, 3]], [[0, 3], [1, 2]], [[0, 2], [1, 3]]]
  

Спасибо!!

Ответ №1:

Вы можете преобразовать его в массив numpy, изменить его форму, а затем преобразовать обратно.

 import numpy as np

A = [[[[0, 1], [2, 3]], [[0, 2], [1, 3]], [[0, 3], [1, 2]]], [[[0, 2], [1, 3]], [[0, 3], [1, 2]], [[0, 2], [1, 3]]]]

npA = np.array(A)

B = npA.reshape(6, 2, 2).tolist()
  

Или, если вы хотите, чтобы он обобщался на разные размеры входных данных

 B = npA.reshape(npA.size // 4, 2, 2).tolist()
  

Ответ №2:

Что касается вашего конкретного вопроса, мы можем получить B из A[0] A[1]

 >>> A = [[[[0, 1], [2, 3]], [[0, 2], [1, 3]], [[0, 3], [1, 2]]], [[[0, 2], [1, 3]], [[0, 3], [1, 2]], [[0, 2], [1, 3]]]]
>>> B = [[[0, 1], [2, 3]], [[0, 2], [1, 3]], [[0, 3], [1, 2]], [[0, 2], [1, 3]], [[0, 3], [1, 2]], [[0, 2], [1, 3]]]
>>> A[0]   A[1]
[[[0, 1], [2, 3]], [[0, 2], [1, 3]], [[0, 3], [1, 2]], [[0, 2], [1, 3]], [[0, 3], [1, 2]], [[0, 2], [1, 3]]]
>>> A[0]   A[1] == B
True
  

Ответ №3:

Для вашего конкретного требования вы можете взять первый элемент списка A и расширить его вторым элементом списка A

 B = A[0]
B.extend(A[1])