如果我有一个字符串数组,我能检查字符串是否在数组中而不用for循环吗?具体地说,我正在寻找一种方法来做它在一个if语句,所以这样的东西:
if [check that item is in array]:
如果我有一个字符串数组,我能检查字符串是否在数组中而不用for循环吗?具体地说,我正在寻找一种方法来做它在一个if语句,所以这样的东西:
if [check that item is in array]:
当前回答
使用lambda函数。
假设你有一个数组:
nums = [0,1,5]
检查Python 3中的nums中是否有5。X:
(len(list(filter (lambda x : x == 5, nums))) > 0)
在Python 2.7中检查nums中是否有5:
(len(filter (lambda x : x == 5, nums)) > 0)
这个解决方案更加健壮。现在可以检查数组nums中是否有满足特定条件的数字。
例如,检查nums中是否存在大于或等于5的数字:
(len(filter (lambda x : x >= 5, nums)) > 0)
其他回答
使用lambda函数。
假设你有一个数组:
nums = [0,1,5]
检查Python 3中的nums中是否有5。X:
(len(list(filter (lambda x : x == 5, nums))) > 0)
在Python 2.7中检查nums中是否有5:
(len(filter (lambda x : x == 5, nums)) > 0)
这个解决方案更加健壮。现在可以检查数组nums中是否有满足特定条件的数字。
例如,检查nums中是否存在大于或等于5的数字:
(len(filter (lambda x : x >= 5, nums)) > 0)
假设你说“数组”的意思是“列表”,你可以做到
if item in my_list:
# whatever
这适用于任何集合,而不仅仅是列表。对于字典,它检查给定的键是否存在于字典中。
数组必须使用.values。 例如,你有一个dataframe,它有一个列名为test[' name '],你可以这样做
if name in test['Name'].values :
print(name)
对于一个普通的列表,你不必使用.values
也可以对数组使用相同的语法。例如,在Pandas系列中搜索:
ser = pd.Series(['some', 'strings', 'to', 'query'])
if item in ser.values:
# do stuff
我还假定你说的“数组”指的是“列表”。Sven Marnach的解决方案很好。如果您要对列表进行重复检查,那么可能值得将其转换为set或frozenset,这对每次检查都更快。假设你的strs列表被称为subjects:
subject_set = frozenset(subjects)
if query in subject_set:
# whatever