輸入如下所示(my_list)。這實際上是十六進制數字的串列。每對元素 0-1、2-3、4-5 形成 16 位有符號整數,因此我需要合并每一對元素。
my_list = [['61', '00', '7B', '01', 'F2', '1F'],
['9A', 'FE', '8C', '02', '01', '22'],
['F4', 'FD', '60', '04', '35', '24']]
我想得到的輸出是
aX = ['6100', '9AFE', 'F4FD']
aY = ['7B01', '8C02', '6004']
aZ = ['F21F', '0122', '3524']
現在我正在按照以下方式進行操作。它有效,但問題是隨著 my_list 行長度的增加,我必須不斷添加更多代碼行。有沒有更好的辦法?
aX = [ x[0] x[1] for x in my_list ]
aY = [ x[2] x[3] for x in my_list ]
aZ = [ x[4] x[5] for x in my_list ]
感謝您的投入!
uj5u.com熱心網友回復:
您可以組合map,zip如下所示:
>>> list(zip(*map(lambda x: [''.join(x[i:i 2]) for i in range(0, len(x), 2)], my_list)))
[('6100', '9AFE', 'F4FD'), ('7B01', '8C02', '6004'), ('F21F', '0122', '3524')]
或作為嵌套串列:
>>> list(map(list, zip(*map(lambda x: [''.join(x[i:i 2]) for i in range(0, len(x), 2)], my_list))))
[['6100', '9AFE', 'F4FD'], ['7B01', '8C02', '6004'], ['F21F', '0122', '3524']]
uj5u.com熱心網友回復:
您可以使用串列推導str.join來連接每兩個專案,并zip轉置:
aX, aY, aZ = map(list, zip(*([''.join(l[i:i 2]) for i in range(0, len(l), 2)]
for l in my_list)))
輸出:
aX
# ['6100', '9AFE', 'F4FD']
aY
# ['7B01', '8C02', '6004']
aZ
# ['F21F', '0122', '3524'])
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/495785.html
