Python 映射数组

Python Mapping Arrays

我有一个数组 pat=[1,2,3,4,5,6,7] 和第二个数组 count=[5,6,7,8,9,10,11]。有没有办法不使用字典得到下面的数组newarray=[[1,5],[2,6],[3,7],[4,8],[5,9],[6,10],[7,11]]?

您可以 zip 列表

>>> pat=[1,2,3,4,5,6,7]
>>> count=[5,6,7,8,9,10,11]
>>> list(zip(pat,count))
[(1, 5), (2, 6), (3, 7), (4, 8), (5, 9), (6, 10), (7, 11)]

或者如果你想要列表而不是元组

>>> [[i,j] for i,j in zip(pat,count)]
[[1, 5], [2, 6], [3, 7], [4, 8], [5, 9], [6, 10], [7, 11]]

如果你希望内部元素是列表,你可以使用-

>>> pat=[1,2,3,4,5,6,7]
>>> count=[5,6,7,8,9,10,11]
>>> newarray = list(map(list,zip(pat,count)))
>>> newarray
[[1, 5], [2, 6], [3, 7], [4, 8], [5, 9], [6, 10], [7, 11]]

这首先压缩两个列表,组合每个列表的第 i 个元素,然后使用 map 函数将它们转换为列表,然后将完整的外部映射对象(我们从 map 函数获得)转换为名单

不使用 zip,您可以执行以下操作:

def map_lists(l1, l2):
    merged_list = []
    for i in range(len(l1)):
        merged_list.append([l1[i], l2[i]])
    return merged_list

或者,等效地,使用列表理解代替:

def map_lists(l1, l2):
    return [[l1[i], l2[i]] for i in range(len(l1))]