三元表示式:
x=20
y=15
res=
"yes"
if x>y else
"no"
條件:x>y 一元
條件成立:yes 一元
條件不成立:no 一元
生成式:列表生成式
l = [i for i in range(10)]#一行**生成10以內的列表
衍生:l = [i for i in range(10) if i>5] #生成大於五的列表
列表生成式可以套多個for迴圈但不建議,套多個降低了**可讀性
例:
names =
[lxx,hxx,wxx]
l=[name+
"_sb"
for name in names]
print
(l)
例:
names =
["egon"
,"lxx_sb"
,"hxx_sb"
,"wxx_sb"
]l =
[name,
for i in names ifname.endswith(
"sb")]
print l
字典生成式:
例:res =
print(res)
集合生成式:
例:res =
生成器表示式:
例:res = (i for i in range(3))
print(res)
上面是生成乙個0到3生成器,括號裡可以加判斷
綜上所述:
生成的是列表,{}生成的是字典和集合,()是生成的生成器
函式的遞迴呼叫:
再呼叫函式的內部又呼叫自己,所以遞迴呼叫的本質就是乙個迴圈的過程
不終止的話,會無限迴圈,將記憶體空間佔滿
預設遞迴深度為1000次
遞迴兩個階段:優點:基於函式的迴圈,如果想重複執行某段函式,將它加入它自己函式體內即可
1、回溯:向下層一層一層呼叫
2、遞推:向上層一層一層返回
例:
import sys
sys.getrecursionlimit(
)sys.setrecursionlimit(10)
deff1
(n):
print
('from f1'
,n)f1(n+1)
f1(1
)#import sys
#sys.setrecursionlimit() #更改遞迴深度
nums =[1
,[2,
[3,[
4,[5
,[6,
[7]]
]]]]
]def
get(l)
:for num in l:
iftype
(num)
islist
: get(num)
else
:print
(num)
get(nums)
用遞迴呼叫實現二分法:
nums =[-
3,1,
3,7,
13,23,
37,43,
57,63,
77,91,
103]
i=33
deffind
(nums,i)
:print
(nums)
iflen
(nums)==0
:print
("not num"
)return
mid_index=
len(nums)//2
if i>nums[mid_index]
: find(nums[mid_index+1:
],i)
elif i: find(nums[
:mid_index]
,i)elif i==nums[mid_index]
:print
("you got it"
)
匿名函式:沒有名字的函式
特點:臨時只能用一次
lambda 不用跟**塊,匿名函式一行即可
例:res=(lambda x,y:x+y)(1,5)
print(res)
內建函式:
max,min 比大小
sort 排序
map面向過程程式設計:主要就是一種面向過程的程式設計思想
核心在過程二字,過程就是解決問的步驟,即先乾啥,在幹啥,後幹啥
所以基於該思想編寫程式就好比設計一條條的流水線
優點:複雜的問題流程化、進而簡單化
缺點:牽一髮而動全身,擴充套件性差,
2020 12 31 建立程序
bool createprocessa lpstr lpcommandline,指向乙個以null結尾的字串,該字串指定要執行的命令列。lpsecurity attributes lpprocessattributes,指向乙個security attributes結構體,這個結構體決定是否返回的控...
2020 12 31 輸出月曆
includeint main 首先是輸出頭行,這個不用多說。第二個是將輸入的數作為週幾,加入輸出計數器中,使得每輸出到週六時就可以換行。第三,設定乙個單獨的變數,輸出這是幾號。第四,為了使輸出對齊,用取餘的方法判斷這是一行中第幾個數,如果不是第乙個數就多輸出乙個空格,第七個輸出之後輸出換行符。基本...
20201231 無重疊區間
給定乙個區間的集合,找到需要移除區間的最小數量,使剩餘區間互不重疊。注意 可以認為區間的終點總是大於它的起點。區間 1,2 和 2,3 的邊界相互 接觸 但沒有相互重疊。示例 1 輸入 1,2 2,3 3,4 1,3 輸出 1解釋 移除 1,3 後,剩下的區間沒有重疊。示例 2 輸入 1,2 1,2...