Python如何實現窮舉搜尋?

千鋒教育qyf發表於2021-04-14

  窮舉搜尋就是在整個搜尋空間範圍內嘗試每一種可能性,直到找到目標值或者整個搜尋空間都找完也沒有找到目標值。最常見的窮舉搜尋就是線性搜尋,即按照順序簡單檢查所有不同的可能性。

Python

  例如: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自己就有許多函式可以實現查詢。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69996644/viewspace-2768004/,如需轉載,請註明出處,否則將追究法律責任。

相關文章