python中的內建函式(二)
阿新 • • 發佈:2018-12-13
1.部分內建函式
repr()顯示出字串的官方表示形式,返回一個物件的string形式
# repr 就是原封不動的輸出, 引號和轉義字元都不起作用 print(repr('大家好,\n \t我叫周杰倫')) print('大家好我叫周杰倫')
# %r 原封不動的寫出來 name = 'taibai' print('我叫%r' % name)
前面用r來原封不動的寫出來
print(r'我叫\n\t,,,') # 我叫\n\t,,,
chr() 輸入位置數字找出對應的字元
# 找到對應編碼位置的字元
print(chr(97)) # a
print(chr(20013)) # 中
ascii() 是ascii碼就返回該值,不是就返回/u
# 在ascii中就返回這個值. 如果不不在就返回\u...
print(ascii('a')) # 'a'
print(ascii('好')) # '\u597d'
ord() 輸入字元找帶字元編碼的位置
# 找到對應字元的編碼位置
print(ord('a')) # 97
print(ord('中')) # 20013
2.遞迴
在函式中呼叫函式本身.就是遞迴
def func(): print("我是誰") func() func()
在python中遞迴的深度最大到998,
官方給的深度是1000,我在pycharm中測試是998
在python中遞迴的深度最大到998
def foo(n):
print(n)
n += 1
foo(n)
foo(1) # 998結束
使用遞迴來遍歷資料夾中所有檔案
import os def func(lujing,n): # "d:\a\" 定義這個函式 引數為路徑,n用來顯示子資料夾更清晰 lst = os.listdir(lujing) # 獲取路徑下的資料夾列表 for el in lst: # 遍歷這個列表,這裡獲取的只是本層檔名 b, c path = os.path.join(lujing,el) # 加入資料夾 獲取到資料夾 +檔案 if os.path.isdir(path): # "d:/a/b" 如果該路徑下的檔案是資料夾型別 print('\t'*n,el) func(path,n+1) # 繼續相同的操作,這裡使用遞迴 else: print('\t'*n,el) func('D:\a',0)
3.二分查詢
二分查詢,每次能夠排除掉一半的資料,查詢的效率非常高,但是侷限性比較大,必須是有序序列才可以使用二分查詢
要求:查詢的序列必須是有序序列
使用while迴圈的二分法
lst = [1,3,5,7,12,36,68,79] # 資料集 百萬級資料
num = int(input("請輸入你要查詢的元素資訊:"))
left = 0
right = len(lst)-1
while left<=right:
mid = (left + right) // 2
if num>lst[mid]:
left = mid +1
elif num<lst[mid]:
right = mid - 1
else:
print('存在')
print(mid)
break
else:
print('不存在')
使用遞迴的二分法
lst = [1,3,5,7,12,36,68,79] # 資料集 百萬級資料
num = int(input("請輸入你要查詢的元素資訊:"))
def func(num,left,right):
if left < right:
mid = (left+right)//2
if num >lst[mid]:
left = mid+1
elif num < lst[mid]:
right=mid-1
else:
print('存在')
return mid
return func(num,left,right) # 這個return必須要加否則永遠返回none
else:
print('找不到')
return -1 # 這裡用返回-1
a = func(num,0,len(lst)-1)
print(a)
用遞迴和列表切片的二分法
lst = [1,3,5,7,12,36,68,79] # 資料集 百萬級資料
num = int(input("請輸入你要查詢的元素資訊:"))
def func(num,lst):
left = 0
right = len(lst)-1
if lst != []:
mid = (left+right)//2
if num > lst[mid]:
func(num,lst[mid+1:])
elif num < lst[mid]:
func(num,lst[:mid])
else:
print('找到了')
return
else:
print('沒找到')
return
func(num,lst)
一種極為快速的查詢方式,我在小學生程式設計書上看到過的
lst = [1,3,55,98,37,41,2,5,1,4] new_lst = [] for i in range(99): new_lst.append(0) for i in lst: new_lst[i] = 1 i = int(input('請輸入你要找的資料')) if new_lst[i] == 0: print('不存在') else: print('存在')