仅访问具有递归和lambda的列表

问题描述 投票:0回答:4

作为家庭作业的一部分,我必须访问列表中的每个元素而没有for循环,才能在允许使用的函数中使用它,例如:

myList=['Hello','World']

我尝试使用lambda函数(因为不允许使用Def声明函数),但是没有用。

function(next(myList))

也尝试使用next(myList),但有时列表可以包含1000多个元素。

python python-3.x list lambda
4个回答
1
投票

将lambda与map一起使用,将功能应用于每个元素:

myList=['Hello','World']

list(map(lambda x: x.upper(), myList))

1
投票

使用地图是最短的方法。您不需要lambda。

li = list(range(10)) # this is your list
list(map(print, li)) # view each element

0
投票

如果可以使用功能,可以使用该技巧

您可以使用递归访问所有元素。

首先创建一个函数以读取第一个元素并删除该元素。

反复使用该功能,直到列表为空。

def show(my_list):
   try:
      print(my_list[0])
      del my_list[0]
      show(my_list)
   except:
      pass

或者,如果您想采取行动

new = []
def action(my_list):
   try:
      x = do_something(my_list[0])
      del my_list[0]
      new.append(x)
      action(my_list)
   except:
      pass

这里do_something(data)是您的自定义功能。


0
投票

我相信最干净的方法是使用map函数:

l = [1,2,3]
list(map(lambda x : print(x), l))
# returns
# >> 1
# >> 2
# >> 3
© www.soinside.com 2019 - 2024. All rights reserved.