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所建议。
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]
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]
添加回答
举报