[英]Simple Way to Check Each List Element for Match with Particular String in Python
我在 Python 中有以下列表:
my_list = ["yes", "yes", "no", "yes", "no", "yes"]
我想返回一个逻辑值列表,如果 my_list 中的相应列表元素等于“yes”,则返回True
,如果 my_list 中的相应列表元素等于“no”,则返回False
。
所需的 output:
my_list_logical = [True, True, False, True, False, True]
我通常在 R 和 R 中编程,这可以使用以下代码轻松完成:
my_list == "yes"
我在这个线程中找到了 Python 解决方案。 但是,这个线程的解决方案非常复杂,我不敢相信 Python 比 R 复杂得多。
有没有一种简单的方法可以根据我的输入向量返回逻辑列表?
您可以使用列表理解:
my_list = ["yes", "yes", "no", "yes", "no", "yes"]
logical = [item=='yes' for item in my_list]
OUTPUT :
[True, True, False, True, False, True]
或者,您甚至可以使用 map:
logical = list(map(lambda x: x=='yes', my_list))
可能最好的答案是使用 package numpy
。 Numpy arrays 的作用类似于 R 向量。
import numpy as np
my_list = np.array(["yes", "yes", "no", "yes", "no", "yes"])
my_list == "yes"
array([ True, True, False, True, False, True])
您可以使用map()
function 和语法map(<function>, <iterable>)
。 但是,您必须将其编码为list()
以产生结果,例如:
my_list = ["yes", "yes", "no", "yes", "no", "yes"]
my_list_logical = list(map(lambda x: x == "yes", my_list))
print(my_list_logical)
Output
[True, True, False, True, False, True]
您可能会非常使用列表推导:
my_list = ["yes", "yes", "no", "yes", "no", "yes"]
result = [item == "yes" for item in my_list]
哪个产量
[True, True, False, True, False, True]
是的,这是我能想到的最合乎逻辑的方式
my_list = ["yes", "yes", "no", "yes", "no", "yes"]
my_list_logical = []
for i in my_list:
if i == “yes”:
my_list_logical.append(True)
else:
my_list_logical.append(False)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.