Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有一种方法可以编写一个lambda函数,只选择字符串数组中的一些元素?_Python_Arrays_String_Lambda - Fatal编程技术网

Python 有没有一种方法可以编写一个lambda函数,只选择字符串数组中的一些元素?

Python 有没有一种方法可以编写一个lambda函数,只选择字符串数组中的一些元素?,python,arrays,string,lambda,Python,Arrays,String,Lambda,例如,给定数组a=[1,2,3,4],我可以使用如下lambda函数打印所有数组 print((lambda x:x)(a)) print([x for i,x in enumerate(a) if i%2==0]) 但是如果我只想输出偶数索引,我可以使用类似这样的方法来解决它 print((lambda x:x)(a)) print([x for i,x in enumerate(a) if i%2==0]) 我的输出 ["one","three"] 但是,如何使用lambda函数获

例如,给定数组a=[1,2,3,4],我可以使用如下lambda函数打印所有数组

print((lambda x:x)(a))
print([x for i,x in enumerate(a) if i%2==0])
但是如果我只想输出偶数索引,我可以使用类似这样的方法来解决它

print((lambda x:x)(a))
print([x for i,x in enumerate(a) if i%2==0])
我的输出

["one","three"]
但是,如何使用lambda函数获得相同的输出?

尝试以下方法:

result = list(filter(lambda x: (x == "one" or x =="three"), my_list))
print(result)
基本上,filter函数过滤掉lambda中返回false的列表中的所有项,因此您可以通过替换第二部分来过滤掉任何内容

您可以使用operator.itemgetter解决此问题

itemgetter是在考虑将lambda表达式从Python 3000(最终作为Python 3发布的语言)中删除时引入的函数之一。它的目的是取代lambda在表达式中的需要,如

>>> (lambda x: (x[0], x[2]))(a)
("one", "three")

同时效率也稍高。

任何Python函数都可以写成lambda,因此您的问题的答案是yes@DaveKielpinski在Church Turing假设的意义上,是的,但将许多Python函数重新编写为lambda表达式会使它们无法识别。@chepner这不是问题,尽管如此。你的评论毫无意义。我重写了这个问题,说明了我想做什么。任何人