Python基礎題
1、冒泡排序
def mao_pao(li): for i in range(len(li)): for j in range(len(li)): if li[i] < li[j]: li[i],li[j] = li[j] ,li[i] import random li = list(range(10)) random.shuffle(li) print(li) mao_pao(li) print(li)
2、刪除列表中的重復元素
方式一 li = [1,5,5,4,12,3,1,5] print(list(set(l))) 方式二 li = [1,5,5,4,12,3,1,5] def func(li): l = [] for i in li: if i not in l: l.append(i) return l print(func(li))
3、二分查找
方式一:遞歸版 li = [1,2,3,4,5,6,7,8,9,10] def erfen(li,aim ,start=0 ,end=len(li)-1): if start <= end: mid = (start+end)//2 if li[mid] >aim : #如果中間的值比目標值大,就從左邊找 return erfen(li,aim,start,mid-1) elif li[mid]<aim : #從右邊找 return erfen(li,aim,mid+1,end) else: return mid ret = erfen(li,10) print(ret) 方式二:循環版 li = [1,2,3,4,5,6,7,8,9,10] def erfen(li,aim,start=0,end=len(li)-1): while start <= end: mid = (start+end) //2 if li[mid] < aim: start = li[mid] +1 elif li[mid] >aim: end = li[mid] -1 else: return mid print(erfen(li,10))
4、寫出下面代碼的輸出結果
def f(x,l=[]): for i in range(x): l.append(i*i) print(l) f(2) #[0,1] f(3,[3,2,1]) #[3,2,1,0 1 4] f(3) #[0,1,0,1,4]
5、實現字符串反轉 輸入str="string"輸出'gnirts'
# 方式一 def str_reverse(str): return str[::-1] #從前到后步長為-1 print(str_reverse('string')) # 方式二 def str_reverse2(str): l = list(str) l.reverse() new_str = ''.join(l) return new_str print(str_reverse2('string'))
6、一行代碼實現對列表a中的偶數位置的元素進行加3后求和
# 0 1 2 3 4 # 0 5 7 sums=sum(map(lambda x:x+3,list(range(5))[::2])) print(sums)
7、List=[-2,1,3,-6] ,如何實現以絕對值大小從小到大將list中內容排序
List=[-2,1,3,-6] List.sort(key=abs) #按照絕對值從小到大排序 print(List)
8、如果當前日期為20170130,要求寫一個函數輸出N天后的日期
import datetime data = '20170130' def func(n,data): date=datetime.datetime.strptime(data,'%Y%m%d') da=datetime.timedelta(n) return date+da print(func(2,data))
9、實現一段代碼,功能是將這段代碼打印出來
import os def print_code(): with open(os.path.join(os.getcwd(),__file__),'r',encoding='utf-8') as f: return f.read() print(print_code())
10、合並兩個列表,並去重,組成一個新的列表
# 方式一 list1 = [1,2,3,5,8,4,2,6] list2 = [11,44,21,2,54,77] print(list(set(list1+list2))) #方式二 list1.extend(list2) print(list(set(list1))) #方式三 def list_union(list1,list2): for i in list2: list1.append(i) return list1 print(list(set(list_union(list1,list2))))
11、什么是lambda表達式?他有什么好處?另外Python在函數編程方面提供了些什么函數和語法?
答:lambda 表達式也就是匿名函數,一些簡單的功能需要實現的時候可以用匿名函數,一行語句體搞定。 它語法簡單,簡化代碼,不會產生命名沖突,污染命名空間。 Python提供了map,filter,reduce等函數方法,提供了裝飾器,閉包等語法
12、詳細說說tuple,list,dict的用法以及他們的特點
tuple:元組,不可變數據類型,訪問效率高,適合存儲一些常量數據,可以作為字典的鍵使用
list:列表,是可變數據類型,可以通過下標索引取值
dict:字典,是可變數據類型,存儲方式為鍵值對的形式,可以通過相對應的鍵獲取相對應的值。key支持多種數據類型
13、list 對象 alist [{'name':'a','age':20},{'name':'b','age':30},{'name':'c','age':25}],按 alist 中元素的age 由大到小排序
alist = [{'name': 'a', 'age': 20}, {'name': 'b', 'age': 30}, {'name': 'c', 'age': 25}] alist.sort(key=lambda x:x['age'],reverse=True) print(alist)
14、將字符串:"k:1|k1:2|k2:3|k3:4",處理成 python 字典:{'k':'1', 'k1':'2', 'k2':'3','k3':'4' }
s = "k:1|k1:2|k2:3|k3:4" str_list = s.split('|') print(str_list) d = {} for i in str_list: key ,value = i.split(':') d[key] = value print(d)
15、斐波那契數列
def fib(n): if n<=2: return 1 else: return fib(n-1) + fib(n-2) print(fib(10))