Форум сайта python.su
Товарищи! Приветствую! Подскажите пожалуйста, как переписать следующий кусок программы правильно?
Это работает:
rawbytes = bytearray("b", "utf-8") for i in command: if isinstance(i, int): rawbytes.append(i) else: for j in i: rawbytes.append(j)
rawbytes = [(i if isinstance(i, int) else j for j in list(i)) for i in command]
Офлайн
Лучше разделить код на преобразование списка в плоский вид и преобразование плоского списка в bytearray().
Получится
bytearray(flatten(command))
Офлайн
py.user.next
Лучше разделить код на преобразование списка в плоский вид и преобразование плоского списка в bytearray().Получится
Офлайн
>>> def flatten(seq): ... for i in seq: ... if hasattr(i, '__getitem__'): ... for j in flatten(i): ... yield j ... else: ... yield i ... >>> lst = [1, 2, 3, [4, 5, [6, 7, [8]]] , 9, 10] >>> >>> bytearray(flatten(lst)) bytearray(b'\x01\x02\x03\x04\x05\x06\x07\x08\t\n') >>>
Отредактировано py.user.next (Ноя. 30, 2020 13:43:21)
Офлайн
О, даже так! Спасибо большое! Буду пробовать!
Офлайн