sys 模組
importsysprint(sys.getrecursionlimit()) #
遞迴深度 # 1000
sys.setrecursionlimit(2000) #
設定遞迴深度
print(sys.getrecursionlimit()) #
2000
遞迴例項
#編寫乙個計算階乘的函式
deffunc(n):
if n == 1:
return 1
return func(n - 1) *n
print(func(5))
#將下面列表中的數字列印出來 # l = [1, [2, [3, [4, [5, [6, [7]]]]]]]
deff(l):
for i in
l:
if type(i) is
int:
print(i,end='')
else
: f(i)
l = [1, [2, [3, [4, [5, [6, [7]]]]]]]
f(l)
#第n個斐波那契數
deff(n):
if n == 1 or n == 2:
return 1
else
:
return f(n-1) + f(n-2)
print(f(20))
例項:
deffunc(l):
index = len(l)//2
if l[index] >x:
ll = l[index+1:]
func(ll)
elif l[index] lr =l[:index]
func(lr)
else
:
return
index
l =[1,2,3,4,5,56,67,87]
x = 5
print(func(l))
三元表示式:當條件滿足時返回if前面的. 不滿足則返回else後面的.只適用於只有兩種情況的情況下..語法如下
x, y = 5, 6res = x if x > y else y #若x > y返回 x,否則返回 y
print(res)
列表生成式: 用[ ] 控制for 迴圈逐個取出列表中的元素交給for前面的語句逐個處理後生成乙個新的列表,若存在if判斷會先逐個交給if判斷,條件滿足後才會交給for 前面的語句.
l = [1, 2, 3, 4, 5, 6]l1 = [i + 1 for i in
l]print(l1) #
[2, 3, 4, 5, 6, 7]
l2 = [i + 1 for i in l if i != 3]
print(l2) #
[2, 3, 5, 6, 7]
字典生成式: 用{} 通過for迴圈列舉取出列表中的元素組成鍵值對然後組成字典,若存在if判斷會先逐個交給if判斷
l = ['name
', '
age', '
addr']
dic =
print(dic) #
dic1 =
print(dic1) #
enumerate() 列舉補充: 將兩個列表對應的元素組成乙個字典
l = ['name
', '
age', '
addr']
l1 = ['
jay', '
25', '
china']
dic ={}
for i,j in
enumerate(l):
dic[j] =l1[i]
print(dic) #
defmy_sum(x,y):
return x +y
#他倆是等價的
my_sum = lambda x, y : x + y
map() 對映:map()函式接收兩個引數,乙個是函式,乙個是序列,map將傳入的函式基於for迴圈依次作用到序列的每個元素,並把結果作為迭代器返回
l = [1, 2, 3, 4, 5]print(list(map(lambda x : x ** 2,l ))) #
[1, 4, 9, 16, 25]
zip() 拉鍊: 將可迭代的物件作為引數,將物件中對應的元素打包成乙個個元組,然後返回乙個迭代器。如果各個迭代器的元素個數不一致,則返回列表長度與最短的物件相同
l1 = [1,2,]l2 = ['
!','
@','#'
]l3 = ['
a','
b','c'
]print(list(zip(l1,l2,l3))) #
[(1, '!', 'a'), (2, '@', 'b')]
filter() 過濾 接收乙個函式 f 和乙個list,這個函式 f 的作用是對每個元素進行判斷,返回 true或 false,將返回false的元素過濾
l = [1,2,3,4,5,6]print(list(filter(lambda x:x != 3,l))) #
[1, 2, 4, 5, 6]
#過濾掉列表中x == 3 的元素
sorted() 排序 list 的 sort 方法返回的是對已經存在的列表進行操作,無返回值,而內建函式 sorted 方法返回的是乙個新的 list,而不是在原來的基礎上進行的操作。
l = [1, 5, 2, 8, 9, 0]l1 =sorted(l)
print(l) #
[1, 5, 2, 8, 9, 0]
print(l1) #
[0, 1, 2, 5, 8, 9]
reduce() 用傳給 reduce 中的函式 function(有兩個引數)先對集合中的第 1、2 個元素進行操作,得到的結果再與第三個資料用 function 函式運算,最後得到乙個結果。當有初始值時.先用初始值與第乙個元素操作
from functools importreduce
l = [1,2,3,4,5]
l1 = reduce(lambda x,y : x +y, l) #
15l2 = reduce(lambda x,y : x + y, l,6) #
21print(l1 , l2)
day12 生成器和各種推導式
今天主要學習了 1.生成器 2.生成器函式 3.各種推導式 比較詭異,理解了很簡單,不理解很難 4.生成器表示式 重點 一.生成器 def func print 我叫周潤發 return 林志玲 return在函式中表示返回的意思 set func print set 這裡的set 就是建立了乙個生...
day12學習筆記(列表推導式 生成器 迭代器
迭代器iterator 列表推導式又稱之為列表解析式,運用列表解析式,可以快速生成list,可以通過乙個list推導出另乙個list,而 卻十分簡潔。經典語法 語法結構 每個列表推導式都在 for 之後跟乙個表示式,然後有零到多個 for 或 if 子句。列表推導式的執行順序 各語句之間是巢狀關係,...
二分查詢與遞迴式二分查詢
二分查詢 public class binarysearch arrays.sort arr todo auto generated method stub int low 0 int high arr.length 1 while low high elseelse 遞迴實現二分查詢 public...