Python:如何从2D数组制作1D数组

我有array2D = [[1,2,3],[4,5,6]]。我想要的是一个函数,该函数需要一个索引并返回一维数组中的元素。

Example: fn(0) -> returns [1,4]
         fn{1) -> returns [2,5]

我需要一种快速的方法来做到这一点。


隔江千里
浏览 212回答 3
3回答

波斯汪

您可以使用lambda和list comprehension:array2D = [[1,2,3],[4,5,6]]fn = lambda x: [item[x] for item in array2D]print(fn(0)) # [1, 4]print(fn(1)) # [2, 5]print(fn(2)) # [3, 6]如注释中所建议,您可以对函数定义应用相同的概念:def fn(x): return [item[x] for item in array2D]print(fn(0)) # [1, 4]print(fn(1)) # [2, 5]print(fn(2)) # [3, 6]Lambda函数非常有用,可以让您以一种非常清晰的方式定义操作。在我们的示例中,我们的lambda接受一个variable x,该变量表示我们想要的每个itemin的索引array2D然后您有了list comprehension,类似于lambda函数,它们是一个非常强大的工具,并且是python中的必备工具在这种情况下,您应该预先准备好功能定义,如PEP-8所建议。

幕布斯6054654

您可以使用operator.itemgetter:array2D = [[1,2,3],[4,5,6]]from operator import itemgetterdef fn(x, k):    return list(map(itemgetter(k), x))fn(array2D, 0)  # [1, 4]如果要定义用于检索特定索引的新函数,可以通过functools.partial以下方法进行操作:from functools import partialdef fn(x, k):    return list(map(itemgetter(k), x))get_zero_index = partial(fn, k=0)get_zero_index(array2D)  # [1, 4]

月关宝盒

以下列表理解将起作用:def fn(i, lst):    return [sublst[i] for sublst in lst]>>> array2D = [[1, 2, 3], [4, 5, 6]]>>> fn(0, array2D)[1, 4]>>> fn(1, array2D)[2, 5]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python