前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python|如何实现穷举搜索?

Python|如何实现穷举搜索?

作者头像
算法与编程之美
发布2020-04-15 15:48:06
1.3K0
发布2020-04-15 15:48:06
举报
文章被收录于专栏:算法与编程之美

问题描述

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

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

解决方案

方法1:

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

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

方法2:

搜索整个楼层,把所有门一次踢开!

代码实现:

1 通过index实现

代码语言:javascript
复制
listdata=[1,2,3,4,5,6]

x=3

i=listdata.index(x)

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

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)):

print(x,'is in data')

2 通过in判断

代码语言:javascript
复制
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))

3 通过count函数统计

代码语言:javascript
复制
listdata=[1,2,3,4,5,6]

x=3

c=listdata.count(x)

if(c>0):

print(x,'is in data')

else:

print('{}is not in liat'.format(x))

4 通过正则表达式RE实现各种搜索

4.1 查找所有的匹配

代码语言:javascript
复制
import re

listdata='hello,everyone!hello,mum.hello,daddy!'

x='hello'

print(re.findall(x,listdata))

4.2 只要找到1个匹配就返回

代码语言:javascript
复制
import re

listdata='hello,everyone!hello,mum.hello,daddy!'

x='hello'

comp=re.compile(x)

y=re.search(comp,listdata).group()

print(y)

结语

正则表达式解决的是很多复杂的匹配,比如查找所有以‘a’开头的,或者找所有包含3个数字的这种更一般性的问题用正则表达式是更方便的。也可以使用循环实现穷举搜索。当然,Python中的list自己就有许多函数可以实现查找。穷举搜索在任何领域都容易实现,即使要处理非结构化的数据,但是它的效率也很低。

END

主 编 | 王文星

责 编 | 李 靖

where2go 团队

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档