首页 > 解决方案 > 在 2d 数组 python 3.x 中组合元素

问题描述

我有这个二维数组,其中每个数组由 4 组 4 个十六进制值组成:

list1=[['74 68 61 74', '73 20 6D 79', '20 6B 75 6E', '67 20 66 75'], ['C2 5B FC F1', 'B1 7B 91 88', '91 10 E4 E6','F6 30 82 93']]

我想首先将数组拆分为多个 1d 数组,然后将数组组合成多个单个元素,而不是每个元素都有 4 个值,如下所示:

list2=[74, 68, 61, 74, 73, 20, 6D, 79, 20, 6B, 75, 6E, 67, 20, 66, 75]

列表 3=[C2, 5B, FC, F1, B1, 7B, 91, 88, 91, 10, E4, E6, F6, 30, 82, 93]

请让我知道如何做到这一点。先感谢您。

标签: arrayspython-3.xmultidimensional-array

解决方案


您本质上想要做的是“展平”内部列表。有几种方法可以解决这个问题。下面的例子是从这里借用的。意识到列表中的值只是字符串(即使它们可以表示十六进制值),因此在拆分它们时需要将它们视为字符串。

In [25]: list1                                                                    
Out[25]: 
[['74 68 61 74', '73 20 6D 79', '20 6B 75 6E', '67 20 66 75'],
 ['C2 5B FC F1', 'B1 7B 91 88', '91 10 E4 E6', 'F6 30 82 93']]

In [26]: list2 = [t for sublist in list1[0] for t in sublist.split(' ')]          

In [27]: list3 = [t for sublist in list1[1] for t in sublist.split(' ')]          

In [28]: list2                                                                    
Out[28]: 
['74',
 '68',
 '61',
 '74',
 '73',
 '20',
 '6D',
 '79',
 '20',
 '6B',
 '75',
 '6E',
 '67',
 '20',
 '66',
 '75']

In [29]: list3                                                                    
Out[29]: 
['C2',
 '5B',
 'FC',
 'F1',
 'B1',
 '7B',
 '91',
 '88',
 '91',
 '10',
 'E4',
 'E6',
 'F6',
 '30',
 '82',
 '93']

In [30]:   

推荐阅读