问题:检查项目是否在数组/列表中
如果我有一个字符串数组,是否可以检查字符串是否在数组中而不进行for
循环?具体来说,我正在寻找一种在if
语句中执行此操作的方法,因此如下所示:
if [check that item is in array]:
回答 0
假设您说“列表”的意思是“数组”,那么您可以
if item in my_list:
# whatever
这适用于任何集合,而不仅仅是列表。对于字典,它将检查字典中是否存在给定的键。
回答 1
我还要假设您说“数组”时的意思是“列表”。Sven Marnach的解决方案很好。如果要对列表进行重复检查,则可能有必要将其转换为集合或冻结集,这对于每次检查来说可能更快。假设您的str列表称为subjects
:
subject_set = frozenset(subjects)
if query in subject_set:
# whatever
回答 2
使用lambda函数。
假设您有一个数组:
nums = [0,1,5]
检查5是否在nums
:
(len(filter (lambda x : x == 5, nums)) > 0)
该解决方案更加强大。现在,您可以检查数组中是否有满足特定条件的任何数字nums
。
例如,检查是否存在大于或等于5的任何数字nums
:
(len(filter (lambda x : x >= 5, nums)) > 0)
回答 3
您必须对数组使用.values。例如,假设您的数据框的列名称为test [‘Name’],则可以
if name in test['Name'].values :
print(name)
对于普通列表,您不必使用.values
回答 4
您也可以对数组使用相同的语法。例如,在熊猫系列中搜索:
ser = pd.Series(['some', 'strings', 'to', 'query'])
if item in ser.values:
# do stuff