277

for如果我有一个字符串数组,我可以在不循环的情况下检查字符串是否在数组中吗?具体来说,我正在寻找一种在if语句中执行此操作的方法,因此如下所示:

if [check that item is in array]:
4

5 回答 5

519

假设你的意思是你说“数组”的“列表”,你可以这样做

if item in my_list:
    # whatever

这适用于任何集合,而不仅仅是列表。对于字典,它检查给定的键是否存在于字典中。

于 2012-06-28T19:40:26.790 回答
21

当您说“数组”时,我还将假设您的意思是“列表”。Sven Marnach 的解决方案很好。如果您要对列表进行重复检查,那么将其转换为 set 或 freezeset 可能是值得的,这样每次检查都会更快。假设您的 strs 列表称为subjects

subject_set = frozenset(subjects)
if query in subject_set:
    # whatever
于 2012-06-28T19:43:54.647 回答
6

使用 lambda 函数。

假设您有一个数组:

nums = [0,1,5]

检查 5 是否numsPython 3.X中:

(len(list(filter (lambda x : x == 5, nums))) > 0)

检查 5 是否numsPython 2.7中:

(len(filter (lambda x : x == 5, nums)) > 0)

这个解决方案更健壮。您现在可以检查数组中是否有任何满足特定条件nums的数字。

例如,检查是否存在任何大于或等于 5 的数字nums

(len(filter (lambda x : x >= 5, nums)) > 0)
于 2017-09-11T16:33:59.217 回答
2

您必须将 .values 用于数组。例如,假设您有一个具有列名的数据框,即 test['Name'],您可以这样做

if name in test['Name'].values :
   print(name)

对于普通列表,您不必使用 .values

于 2017-11-25T11:06:10.113 回答
-6

您也可以对数组使用相同的语法。例如,在 Pandas 系列中搜索:

ser = pd.Series(['some', 'strings', 'to', 'query'])

if item in ser.values:
    # do stuff
于 2015-12-11T23:32:01.037 回答