Python|如何实现穷举搜索?

简介: Python|如何实现穷举搜索?

问题描述

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

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

解决方案

方法1:

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

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

方法2:

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

代码实现:

1 通过index实现

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判断

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函数统计

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 查找所有的匹配

import re

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

x='hello'

print(re.findall(x,listdata))

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

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自己就有许多函数可以实现查找。穷举搜索在任何领域都容易实现,即使要处理非结构化的数据,但是它的效率也很低。


目录
相关文章
|
7月前
|
存储 JSON API
看我如何使用Python打造一个带娃神奇(一玩能玩一天)?
看我如何使用Python打造一个带娃神奇(一玩能玩一天)?
49 0
|
安全 Python
|
2月前
|
存储 IDE 编译器
解密 Python 函数的实现原理
解密 Python 函数的实现原理
19 0
|
7月前
|
Python
在Python Web开发过程中:`is`和`==`在Python中的区别是什么?
【4月更文挑战第25天】Python的`is`与`==`用于比较。`is`检查对象是否相同(内存地址一致),而`==`检查值是否相等。例如,`a = [1, 2, 3]`,`b = a`,`c = [1, 2, 3]`,则`a is b`和`a == b`均为True,但`a is c`为False,`a == c`为True,因`a`和`b`引用同一对象,而`a`和`c`值虽等但对象不同。
34 1
|
7月前
|
Python
【Python 基础】“is”和“==”有什么区别?
【5月更文挑战第6天】【Python 基础】“is”和“==”有什么区别?
|
7月前
|
存储 搜索推荐 程序员
【python】—— 库的基本介绍
【python】—— 库的基本介绍
|
人工智能 IDE 数据处理
【100天精通python】Day25:python的编程方式以及并发编程详解
【100天精通python】Day25:python的编程方式以及并发编程详解
64 0