python基礎和數據結構 二

數值

使用最多的爲整數和浮點,大致和數學使用相同。

整形 int
數據大小限制,依靠硬件條件
在整形數據的運算中,大部和數學運算相同,但存在進制問題,在沒用特殊指明進制時爲10進制,(0b)表示2進制,(0o)表示8進制,(0x)表好似16進制,而十進制向各個進制的轉化函數如下

Bin() 轉爲2進制
oct() 轉爲8進制
hex() 轉爲16進制

布爾型 boolean
python中存在特殊一類,布爾型,由Ture和Flase組成,是特殊的整數類型,其實際意義爲1和0,較多用於判斷最後產生的結果。

浮點型 float
和數學使用的小數類似
使用格式化佔位符規定小數類型


```ruby
{0:.2f}.format(20)

意義:第一個數字 爲2位小數

注意除法
在python中,存在 \ 和 \ \ ,二者代表意思不同。\爲除法,保留小數單位,\ \爲地板除,最終輸出數據爲最大的小於除法結果的整數,需要進行四捨五入保留結果的方法是round()

Decimal
和其他語言一樣,在遇到浮點類型運算時,精度可能產生問題,如下:


IN  [41]: 1.2+1.33
Out[42]: 2.5300000000000002

python中提供了一個包,Decimal,可以使得數據精度及計算過程精度得以保證

使用:

Decimal(1)

注意:可以傳遞給Decimal整型或者字符串參數,但不能是浮點數據,因爲浮點數據本身就不準確

from decimal import *
Decimal.from_float(12.222) 
 Decimal
 ('12.2219999999999995310417943983338773250579833984375')

設定有效數字

from decimal import *
getcontext().prec = 6
Decimal(1)/Decimal(7)
# 結果爲Decimal('0.142857'),六個有效數字

保留小數位數

from decimal import *
Decimal('50.5679').quantize(Decimal('0.00'))
 #結果爲Decimal('50.57'),結果四捨五入保留了兩位小數

結果轉化

from decimal import *
str(Decimal('3.40').quantize(Decimal('0.0')))
#結果爲'3.4',字符串類型

字符串

在python中使用 “ ” 進行字符串的定義,字符串屬於序列的一類。可通過字符串完成縮影等操作,但是字符串無法修改對象,智能創建新對象。同時字符串不能原位操作,即不能對其內部字母進行修改

常用函數:

s.replace(‘com’,’co’) 相當於新建立一個對象
s=s.join(a)           將字符串s和a相連
s.spilt(,),切割成列表
s.startwith(“url’)    以…爲開頭
s.endwith             以…爲結尾
s.find(“a”)         找某個字符的位置
len(s)                獲取s的長度

轉義字符
爲了處理無法通過字符實現的操作,通過轉義字符實現

\\ 單斜槓
\’ 單引號
\’’ 雙引號
\n  換行 
\b刪除一格 
\t 空格

注意,在處理路徑問題時,\的存在有其他含義,容易和轉義字符成矛盾,此時一般使用\表示下一級或者在路徑前方加 r

Path=r ’c:\abc\xas.txt’ 

格式化字符串
使用{}進行操作

{NAME}={SALARY}.FORMAT(NAME=”TOM,SALARY=””MOM)

字符串的加減乘操作
字符串支持加乘操作具體如下:

a="abc"
b=a*3
b
Out: 'abcabcabc'
a="abc"
b=“cbd”
c=a+b
c
Out: 'abccbd'

列表

任意對象集合,可變長度,可變序列

列表的定義:
通過函數list ( ) 或者 [ ] 進行定義

常見函數 :

l.append()    添加1個元素
l.extend([ ])   將原序列尾部添加一個序列中的元素
l.sort()        排序 正
i.reverse()     排序 反
l.pop()         彈出最後1個元素並刪除
i.index()       返回序列值
i.count()       統計某種元素的個數
del             刪除

注意:
(1) 指定對象是否一致

l1=[1,2,3]
l2=l1
l1[0]=2

在執行完此操作後,l2中的元素也發生變化,如果需l2的元素不發生變化,l2獲得的應該是l1的副本。可使用l1.copy()或者l1[:]獲取

(2)切片操作

l1[a:b:c]

此中的a表示l1切片的起始位置(包括),b表示l1切片的終止位置(不包括),c表示步長

(3)廣播
在序列的運算中,如果運算對象時整個序列,那麼序列中的每個元素都會受到影響

(4)當索引不存在時,無法添加數據,會出現錯誤

l1=[1,2,3]
l1*3
[3,6,9]

字典

一種鍵值對類型數據,又稱哈希表,其特點爲數據順序隨機

字典的定義:
通過函數dict ( ) 或者 [ ] 進行定義

常用函數

d.get(“prive”,0.0)              獲取對應值,如果沒有 不會拋出異常並寫入
emp =dice(name=20,age=20)        通過函數聲明,不需要引號
emp.update(dep)                  將dep更新至字典
emp.pop(“a”)                     彈出鍵爲a的鍵值並刪除
emp,keys()                       獲取鍵
emp.values()                     獲取值

注意:
(1)字典結構存貯的數據並無順序一說,可人爲對鍵進行排序

(2)鍵名:不能使用可變的值,如序列等

(3)存在雙重字典表:

emp={"name":{"first":'nmm',"second":"nbb"}}
emp.get('name').get('first')   #第一張獲取方法
emp['name'][firsr]             #第二章獲取方法

(4)當鍵值對不存在時,可以直接添加

(5)定義字典模型

from collections import namedtuple
dep=namedtuple("name",["a","b"])
a=dep('bb', b="dnakd") #第一個默認第一個,後面的需要指出

元組

任意類型任意嵌套但不可變,位置固定。通過()進行定義

文件數據處理

1 常用函數

fire=open("文件地址")  #打開或創建文件
f.read()              # 以字符串形式讀出文件,注意是以指針形式記錄,下次讀出爲空            
f.readline()          #按行讀出
f.readline()          #將類容以行爲劃分成序列
f.close()             #關閉文件

2 open 函數詳解
open函數後常有2個參數,第一個爲目標文件的地址位置,第二個參數爲文件的打開類型,包括

  • r 讀文件,文件只可以讀取,無法修改
  • w 寫文件,對文件進行編寫並刪除之前類容
  • a 追加,文件原先內容不變,對其進行添加
  • b二進制文件 文件爲2進制未見

3 注意
1)中文問題
在文件中直接田間中文會造成亂碼,可在打開文件時
使用以下格式,避免亂碼

ff=open("course.txt",'w',encoding="utf8")

2)Pickle類 :文件保存數據類型
在文件保存時,對需要臨時保存的數據需要保存數據類似時,使用pickle,使用方法如下:、

Pickle
import pickle
f=open("datafile.pkl","wb")
d={"a":1,"b":2}
pickle.dump(d,f)                    #將類型導入文件'
f.close()
f=open("datafile.pkl",'rb')
f.read
Out[38]: b'\x80\x03}q\x00(X\x01\x00\x00\x00aq\x01K\x01X\x01\x00\x00\x00bq\x02K\x02u.'
data=pickle.load(f)              #載入信息並導出

3)文件打開的一般格式:
在日常操作中,打開文件後需要及時關閉不然會產生很多問題。python提供一種方法可以避免此類問題,使用with

With opne(“dada”) as f

在with結束後自動關閉文件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章