Python教程:Python如何实现穷举搜索?

本文介绍了穷举搜索算法,即尝试搜索空间内的每一种可能性,常见的是线性搜索。以警察找强盗为例,说明在搜索空间不大时穷举搜索是最佳方案。还给出了用Python代码实现穷举搜索的示例,如通过index和in判断,此外正则表达式也可用于复杂匹配。

穷举搜索就是在整个搜索空间范围内尝试每一种可能性,直到找到目标值或者整个搜索空间都找完也没有找到目标值。最常见的穷举搜索就是线性搜索,即按照顺序简单检查所有不同的可能性。
在这里插入图片描述

例如:2个警察追逐强盗到了一个废弃旅馆的二楼走廊,走廊有30道门,全部关闭,其中一个警察已经封锁了对面的楼梯,该如何找到强盗呢?

第一个解决方案如下:

随机打开一扇门,没有强盗,再随机打开一扇门……?

按照以上方法,特警如果运气好,可能一下就找到了;运气不好时,可能有的门找了很多遍,有的门呢一次都没找。这样就有可能出现遗漏和重复,反而找不到需要的信息。处理这种搜索空间不是很大的情况下最佳的就是穷举搜索。

第二个解决方案搜索整个楼层,把所有门打开

如何用代码实现,如下:

通过index实现:

listdata=[1,2,3,4,5,6]

x=3

i=listdata.index(x)

if(i>=0 and i<len(listdata)):< p="">

print(x,‘is in data’)

else:

print(’{}is not in list’.format(x))

#异常处理

try:

i=listdata.index(x)

except ValueError:

print(’{}is not in list’.format(x))

else:

if(i>=0 and i<len(listdata)):< p="">

print(x,‘is in data’)

通过in判断:

listdata=[1,2,3,4,5,6]

x=3

if(x in listdata):

print(‘1:’,x,‘is in data’)

else:

print(‘1:{}is not in list’.format(x))

当然代码的方式肯定不止以上两种,而正则表达式解决的是很多复杂的匹配,比如查找所有以‘a’开头的,或者找所有包含3个数字的这种更一般性的问题用正则表达式是更方便的。也可以使用循环实现穷举搜索。当然,Python中的list自己就有许多函数可以实现查找。

本文来自千锋教育,转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值