对于以下嵌套列表, Lst ,我需要保留第一个内部列表,对第二个列表进行平方运算,对最后一个列表进行立方体运算。
Lst
Lst = [[1,2,3],[2,3,4],[3,4,5]]
我当前的代码正在对列表中的所有嵌套列表进行平方运算 Lst .
list(map(lambda lst: list(map(lambda x: x**2, lst)), Lst))
我怎样才能解决这个问题?我刚开始学习python。
bnl4lu3b1#
由于对每个嵌套列表执行的操作不同,因此不应使用 map() 对于顶级列表。只需为每个Map列出不同Map的结果。
map()
[Lst[0], list(map(lambda x: x**2, lst[1])), list(map(lambda x: x**3, lst[2]))]
然而,这有一个明显的模式,所以您可以使用 enumerate() 和一份清单:
enumerate()
[list(map(lambda x: x**i, sublist)) for i, sublist in enumerate(Lst, 1)]
a0x5cqrl2#
[list(map(lambda x: x**i, l)) for i,l in enumerate(Lst, 1)]
[[1, 2, 3], [4, 9, 16], [27, 64, 125]]
euoag5mw3#
您的处理显然需要考虑您在列表中的位置。将其压成一行使其比实际需要的密度更高,但看看你是否可以用铅笔和纸来完成。
[[x if i == 0 else x**2 if i == 1 else x**3 for x in Lst[i]] for i in range(3)]
演示:https://ideone.com/o8y0ta... 或者,正如巴尔马在回答中巧妙地指出的那样,
[[x**i for x in Lst[i]] for i in range(3)]
e4yzc0pl4#
尝试为外部列表编制索引,然后对每个索引调用map函数
def square(number) : return number**2 def cube(number) : return number**3 lst = [[1,2,3],[2,3,4],[3,4,5]] lst[0] = lst[0] lst[1] = list(map(square, lst[1])) lst[2] = list(map(cube, lst[2])) print(lst)
4条答案
按热度按时间bnl4lu3b1#
由于对每个嵌套列表执行的操作不同,因此不应使用
map()
对于顶级列表。只需为每个Map列出不同Map的结果。然而,这有一个明显的模式,所以您可以使用
enumerate()
和一份清单:a0x5cqrl2#
euoag5mw3#
您的处理显然需要考虑您在列表中的位置。将其压成一行使其比实际需要的密度更高,但看看你是否可以用铅笔和纸来完成。
演示:https://ideone.com/o8y0ta
... 或者,正如巴尔马在回答中巧妙地指出的那样,
e4yzc0pl4#
尝试为外部列表编制索引,然后对每个索引调用map函数