Получение нового списка из элементов множества других списков
Суть проблемы в следующем: есть список SBIX и список SBX с множеством значений в 16-тиричном формате (элементов в этом списке может быть очень много. Для примера 3 элемента) :
SBIX=['-19 -','-18 -','-17 -','-16 -','-15 -','-14 -','-13 -','-12 -',
'-11 -','-10 -','-09 -','-08 -','-07 -','-06 -','-05 -','-04 -']
SBX=['00CA','01FD','FF05']
преобразую SBX из 16-тиричной системы в двоичную и получаю список С, путем сложение элементов строки BIN и SBIX:
for i in SBX:
BIN = format(int(i, 16), '0>16b')
С=[x+y for x,y in zip(BIN, SBIX)]
print(C)
В результате в данном случае получаю три списка:
['0-19 -', '0-18 -', '0-17 -', '0-16 -', '0-15 -', '0-14 -', '0-13 -', '0-12 -', '1-11 -', '1-10 -', '0-09 -', '0-08 -', '1-07 -', '0-06 -', '1-05 -', '0-04 -']
['0-19 -', '0-18 -', '0-17 -', '0-16 -', '0-15 -', '0-14 -', '0-13 -', '1-12 -', '1-11 -', '1-10 -', '1-09 -', '1-08 -', '1-07 -', '1-06 -', '0-05 -', '1-04 -']
['1-19 -', '1-18 -', '1-17 -', '1-16 -', '1-15 -', '1-14 -', '1-13 -', '1-12 -', '0-11 -', '0-10 -', '0-09 -', '0-08 -', '0-07 -', '1-06 -', '0-05 -', '1-04 -']
Далее необходимо получить 15ть списков вида:
С1=['0-19 -', '0-19 -', '1-19 -']
С2=['0-18 -', '0-18 -', '1-18 -']
С3=['0-17 -', '0-17 -', '1-17 -']
и так далее... Вот на получении этих 15ти списков встал. Буду очень благодарен, если натолкнёте на мысль, как это реализовать. Спасибо!
Ответы (1 шт):
Ну можно так, если особо не думать:
arr = []
for i in SBX:
BIN = format(int(i, 16), '0>16b')
C =[x+y for x,y in zip(BIN, SBIX)]
#print(C)
arr.append(C)
arr15 = list(zip(*arr))
print(arr15)
Вывод:
[('0-19 -', '0-19 -', '1-19 -'),
('0-18 -', '0-18 -', '1-18 -'),
('0-17 -', '0-17 -', '1-17 -'),
('0-16 -', '0-16 -', '1-16 -'),
('0-15 -', '0-15 -', '1-15 -'),
('0-14 -', '0-14 -', '1-14 -'),
('0-13 -', '0-13 -', '1-13 -'),
('0-12 -', '1-12 -', '1-12 -'),
('1-11 -', '1-11 -', '0-11 -'),
('1-10 -', '1-10 -', '0-10 -'),
('0-09 -', '1-09 -', '0-09 -'),
('0-08 -', '1-08 -', '0-08 -'),
('1-07 -', '1-07 -', '0-07 -'),
('0-06 -', '1-06 -', '1-06 -'),
('1-05 -', '0-05 -', '0-05 -'),
('0-04 -', '1-04 -', '1-04 -')]
Получились, правда, кортежи, а не списки, но если хотите это легко правится:
arr15 = list(map(list,zip(*arr)))
В общем, конструкция zip(*arr) легко транспонирует (поворачивает) список списков.