enumerate()使用
如果對一個列表,既要遍歷索引又要遍歷元素時,首先可以這樣寫:
list1 = ["這", "是", "一個", "測試"]
for i in range (len(list1)): print i ,list1[i]
上述方法有些累贅,利用enumerate()會更加直接和優美:
list1 = ["這", "是", "一個", "測試"]
for index, item in enumerate(list1): print index, item >>> 0 這 1 是 2 一個 3 測試
enumerate還可以接收第二個參數,用于指定索引起始值,如:
list1 = ["這", "是", "一個", "測試"]
for index, item in enumerate(list1, 1): print index, item >>> 1 這 2 是 3 一個 4 測試
三元運算
val = a if 3<6 else b
判斷文件是什么編碼,用第三方庫判斷
import chardet
讀文件
f = open('1.txt',mode = 'rb') #b的作用是讀出二進制
f = open('1.txt',mode = 'ab' #a 追加模式
mode = 'r+' #讀寫模式,先讀后寫
mode = 'w+' #寫讀模式,先以寫的模式打開,再讀
flush() #把內存寫進硬盤里
readable() #判斷是否可讀
tell() #返回當前光標位
seek() #回光標位
read() #讀的是字節
seek() 和 tell() #讀的是字符
f.truncate() #從當前位置刪除
Word文檔打開時是先打開到內存里面去
?
函數
def 定義
形參
實參
默認參數
默認參數必須放在形參的后面
非固定參數
send_alert(msg,*user) args # *傳遞的參數就可以不再固定個數 ,*后打包成元組
func(name,*args,**kwargs)
return #代表一個函數的終止;函數永遠只會返回一個值
局部變量 #先執行局部變量,再全局變量
函數內部,可以調用全局變量
global #在函數里修改全局變量
嵌套函數
一個函數就是一個作用域,代碼定義完成后,作用域就已經生成,無論其中的函數在哪里運行,該函數都會返回其作用域里運行
匿名函數:lambda x,y:x*y #聲明一個匿名函數,復雜程度只能到三元運算
高階函數 #接受一個或多個函數作為輸入;;return返回另外一個函數
遞歸函數的返回值
def calc(x,count):
if count < 5:
x = x/2
print('x', x)
return calc(x,count+1) #此return是為了上一層獲得下一層的return值
else:
print('x',x)
return x #此return是為了使最底層返回一個值給上一層,兩個return 缺一不可
遞歸的特性
1.必須要有一個明確的結束條件
2.每次進入下一層,問題規模比上次遞歸要有所減少
3.遞歸效率不高,遞歸次數過多會導致棧溢出