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

Simple Way to Check Each List Element for Match with Particular String in Python

我在 Python 中有以下列表:

my_list = ["yes", "yes", "no", "yes", "no", "yes"]

我想要 return 一个逻辑值列表,True 以防 my_list 中对应的列表元素等于“是”并且 False如果 my_list 中相应的列表元素等于“否”。

期望的输出:

my_list_logical = [True, True, False, True, False, True]

我通常在 R 中编程,在 R 中这可以使用以下代码轻松完成:

my_list == "yes"

我在 this thread 中找到了 Python 解决方案。然而,这个线程的解决方案非常复杂,我不敢相信 Python 比 R.

复杂得多。

是否有一种简单的方法可以return基于我的输入向量的逻辑列表?

您可以使用列表理解:

my_list = ["yes", "yes", "no", "yes", "no", "yes"]

logical = [item=='yes' for item in my_list]

输出:

[True, True, False, True, False, True]

或者,您甚至可以使用地图:

logical = list(map(lambda x: x=='yes', my_list))

最好的答案可能是使用包 numpy。 Numpy 数组的行为类似于 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])

你可能会很用到列表理解:

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)

您可以使用语法为 map(<function>, <iterable>)map() 函数。但是,您必须将其编码为 list() 才能产生结果,例如:

my_list = ["yes", "yes", "no", "yes", "no", "yes"]
my_list_logical = list(map(lambda x: x == "yes", my_list))
print(my_list_logical)

输出

[True, True, False, True, False, True]