我有一个如下所示的列表:
arr = [['3'], ['1', '0.0'], ['2', '0.05'], ['3', '0.1'], ['1', '1'], ['2', '1'], ['3', '1']]
我想把这个列表分成更小的子列表,这些子列表的大小在原始列表的第一个元素中给出(例如这里的 3)并且只包含第二个元素。执行此操作的最 pythonic 方法是什么?
sublist1 = [0.0, 0.05, 0.1]
sublist2 = [1, 1, 1]
我试过使用列表理解,但我不知道如何规定 for 循环来遍历数组(即在索引 1 和 3 之间或索引 4 和 6 之间)上面的示例 arr)。
n_nodes = arr[0][0] # gets number of nodes, 3
first_section = [element[1] for element in arr]
请您参考如下方法:
让我们将其分解为简单的步骤。首先,获取整数形式的 block 大小:
>>> [n] = arr[0]
>>> n = int(n)
>>> n
3
然后,获取第二个元素的列表。有几种方法可以做到这一点,但最可读的是使用列表理解:
>>> bs = [b for [a,b] in arr[1:]]
>>> bs
['0.0', '0.05', '0.1', '1', '1', '1']
现在,将这个列表切成 block 。这是一个已经解决的问题,在这里无限讨论:
