繁体   English   中英

检查每个列表元素是否与 Python 中的特定字符串匹配的简单方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM