1. 程式人生 > >重新學習Python(3.6)筆記

重新學習Python(3.6)筆記

1、print在Python2.X的版本里面後面不需要加括號,在3.6裡面需要加括號才能列印輸出;

2、直接使用data.write(u.read())時出現這樣的錯誤“write() argument must be str, not bytes”,需要設定解碼方式:
data=u.read()
data = data.decode('utf-8') 
localf.write(data)
先說一下python中的字串型別,在python中有兩種字串型別,分別是str和unicode,他們都是basestring的派生類;str型別是一個包含Characters represent (at least) 8-bit bytes的序列;unicode的每個unit是一個unicode obj;所以:
len(u'中國')的值是2;len('ab')的值也是2;
在str的文件中有這樣的一句話:The string data type is also used to represent arrays of bytes, e.g., to hold data read from a file. 也就是說在讀取一個檔案的內容,或者從網路上讀取到內容時,保持的物件為str型別;如果想把一個str轉換成特定編碼型別,需要把str轉為Unicode,然後從unicode轉為特定的編碼型別如:utf-8、gb2312等;
3、Urllib庫的基本使用
百度一搜索大多是用來爬蟲扒網頁的,我用到它的目的是在網頁上下載一個數據集即“iris.csv”;
首先我的Python版本是3.6的,庫下面只有Lib\urllib,而沒有老版本里面的urllib2,
代替import urllib2 為 import urllib.request
代替urllib.urlopen(url) 為 urllib.request.urlopen(url)
即可。
4、np_utils的使用
keras要求的label格式應該為binary class matrices,所以,需要對輸入的label資料進行轉化,需要利用keras提高的to_categorical函式
匯入標頭檔案的格式為:from keras.utils import np_utils
當格式為  train_LBL=np_utils.to_categorical(train_lbl,nb_classes=10)
提示如下的錯誤:
 

改為  train_LBL=np_utils.to_categorical(train_lbl,10)

問題解決。

5、 字串的特點

for i in range(len(nums)) # len(nums)代表矩陣長度,i從0開始。

>>> range(1,5) #代表從1到5(不包含5) [1, 2, 3, 4] >>> range(1,5,2) #代表從1到5,間隔2(不包含5) [1, 3] >>> range(5) #代表從0到5(不包含5) [0, 1, 2, 3, 4]

在Python中的每一個物件都可以分為不可變性或者可變性,在核心型別中,數字、字串和元組是不可變的;列表和字典不是這樣(它們可以完全自由地改變)。在其他方面,這種不可變性可以用來保證在程式中保持一個物件固定不變。

因此,不能通過對其某一位置進行賦值而改變字串,但是你總是可以通過建立一個新的字串並以同一個變數名對其進行賦值,因為Python在執行過程中會清理舊的物件。