如果我有一个字符串数组,我可以检查一个字符串是否在数组中而不执行for
循环吗?具体来说,我正在寻找一种方式来的if
语句中做到这一点,所以是这样的:检查项目是否在数组/列表
if [check that item is in array]:
如果我有一个字符串数组,我可以检查一个字符串是否在数组中而不执行for
循环吗?具体来说,我正在寻找一种方式来的if
语句中做到这一点,所以是这样的:检查项目是否在数组/列表
if [check that item is in array]:
假设你的意思是“清单”里你说“阵列”,你可以做
if item in my_list:
# whatever
......就是这样吗?我一直在谷歌搜索20分钟.... – SomeKittens
@SomeKittens:列表将在内部做自己的循环来测试成员资格。 – jdi
@jdi,并且该循环运行速度比Python中显式编码的循环快得多,更不用说更易于阅读了。 –
当你说“数组”时,我还会假定你的意思是“列表”。 Sven Marnach的解决方案很好。如果您要对列表进行重复检查,则可能需要将其转换为集合或冻结集合,对于每个检查来说可以更快。假设你的STR的列表被称为subjects
:
subject_set = frozenset(subjects)
if query in subject_set:
# whatever
您也可以使用相同的语法的数组。例如,在Pandas系列内搜索:
ser = pd.Series(['some', 'strings', 'to', 'query'])
if item in ser.values:
# do stuff
使用lambda函数。
比方说,你有一个数组:
nums = [0,1,5]
检查是否5是nums
:
(len(filter (lambda x : x == 5, nums)) > 0)
该解决方案更强劲。您现在可以检查是否有任何数字满足条件在您的数组nums
中。
例如,检查在nums
是否存在任何数目大于或等于5:
(len(filter (lambda x : x >= 5, nums)) > 0)
你必须使用.values为阵列。 例如说你有数据帧具有列名即测试[“名称”],你可以为你不正常的名单做
if name in test['Name'].values :
print(name)
必须使用.values
我认为这个问题是已经回答[这里](http://stackoverflow.com/questions/9542738/python-find-in-list) –
或更好的这里:http://stackoverflow.com/questions/12934190/is-there-a-short -contains-function-for-lists – torina
可能的重复[检查列表中是否存在值的最快方法](https://stackoverflow.com/questions/7571635/fastest-way-to-check-if-a-存在于列表中的值) –