为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

隔江千里 2021-05-10 05:53:26
我有array2D = [[1,2,3],[4,5,6]]。我想要的是一个函数,该函数需要一个索引并返回一维数组中的元素。Example: fn(0) -> returns [1,4]          fn{1) -> returns [2,5]我需要一种快速的方法来做到这一点。
查看完整描述

3 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

您可以使用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所建议。


查看完整回答
反对 回复 2021-05-18
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

您可以使用operator.itemgetter:


array2D = [[1,2,3],[4,5,6]]


from operator import itemgetter


def fn(x, k):

    return list(map(itemgetter(k), x))


fn(array2D, 0)  # [1, 4]

如果要定义用于检索特定索引的新函数,可以通过functools.partial以下方法进行操作:


from functools import partial


def fn(x, k):

    return list(map(itemgetter(k), x))


get_zero_index = partial(fn, k=0)

get_zero_index(array2D)  # [1, 4]


查看完整回答
反对 回复 2021-05-18
?
月关宝盒

TA贡献1772条经验 获得超5个赞

以下列表理解将起作用:


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]


查看完整回答
反对 回复 2021-05-18
  • 3 回答
  • 0 关注
  • 211 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信