天天看點

再談資料類型

  學過計算機程式設計的人都知道,計算機無論多麼牛叉,其實都是在“天下武功,唯快不破”的基礎上成立的。計算機可以處理文本,剪輯視訊,修複音頻,美化照片,顯示網頁,科學計算,這一切的一切都是建立資料的基礎之上,每種程式設計語言的本質,就是通過程式設計,撰寫計算機的指令集合,充分利用計算機可以不休息、速度快的特征讓計算機幫着處理資料,提高處理的效率。無論哪一種程式設計語言,都需要預制一些資料類型,并且這些類型能夠覆寫人類描述資訊的需要。C語言中對數值的處理花的資訊很多,符合類型的結構體、聯合體和枚舉類型,後來都被指針取代了,說C語言簡單的,主要是入門比較簡單,關鍵字少,但是C語言的主要難點在指針。C++在C的基礎上擴充了面向對象,增加了很多普通使用者難以了解和應用的文法,還好有Java語言将C++大大簡化了一番,Java的流行應該說C++的功勞絕對不少了。現在主流的是python,由于在機器學習和AI中Python可以大顯身手,是以Python很火。Python把主要的問題給隐藏了不少,但是python的缺點是無法區分真正的水準吧。哈哈。

  Python中的資料類型,就是語言規定了一些資料的規範和能夠接受的操作方法。數值型(标量),能夠參與算術運算的整型、浮點型、複數型、布爾型和空值;複合類型,清單、元組、字典、集合;字元串;檔案對象;自定義類型等。

一、數值型:

  1、整型:

1 Python 3.8.0 (default, Oct 23 2019, 18:51:26) 
 2 [GCC 9.2.0] on linux
 3 Type "help", "copyright", "credits" or "license()" for more information.
 4 >>> x = 5 + 2 - 3 * 4
 5 >>> x
 6 -5
 7 >>> 5 / 2
 8 2.5
 9 >>> 5 // 2
10 2
11 >>> 5 % 2
12 1
13 >>> 5 * 2
14 10
15 >>> 5 ** 2
16 25
17 >>>      

  說明:第4行中包含了将+ - ×,運算規則和數學中的運算規則完全一樣

      第5-6行,檢視結果和顯示結果

      第7-8行,作除法運算顯示結果,python3中新增的規則

      第9-10行,作地闆除運算顯示結果

      第11-12行,作取餘運算顯示結果

      第13-14行,作乘法運算顯示結果

      第15-16行,作幂運算顯示結果

    其他的資料類型浮點型和複數型都是一樣的可以運算

    布爾型作算術運算時,隻能有Ture=1和False=0兩種值

  

1 Python 3.8.0 (default, Oct 23 2019, 18:51:26) 
 2 [GCC 9.2.0] on linux
 3 Type "help", "copyright", "credits" or "license" for more information.
 4 >>> x = 5.1 + 2.8 - 3.2 * 4.3
 5 >>> x
 6 -5.86
 7 >>> 5.1 / 2.5
 8 2.04
 9 >>> 5.1 // 2.5
10 2.0
11 >>> 5.1 % 2.5
12 0.09999999999999964
13 >>> 5.1 * 2.5
14 12.75
15 >>> 5.1 ** 2.5
16 58.73885009088958      

  本來以為11行會出錯,居然沒有,還出了結果,但是感覺不對阿

1 Python 3.8.0 (default, Oct 23 2019, 18:51:26) 
 2 [GCC 9.2.0] on linux
 3 Type "help", "copyright", "credits" or "license" for more information.
 4 >>> (3 + 2j) * (2 + 3j)
 5 13j
 6 >>> (3 + 2j) ** (2 + 3j)
 7 (0.6817665190890336-2.1207457766159625j)
 8 >>> x = (3 + 2j) * (2 + 3j)
 9 >>> x.real
10 0.0
11 >>> x.imag
12 13.0
13 >>> round(3.4)
14 3
15 >>> round(3.5)
16 4
17 >>> import math
18 >>> math.ceil(3.49)
19 4
20 >>> math.f
21 math.fabs(       math.floor(      math.frexp(      
22 math.factorial(  math.fmod(       math.fsum(       
23 >>> math.floor(3.99)
24 3
25 >>> y=False
26 >>> x
27 13j
28 >>> y
29 False
30 >>> not y
31 True
32 >>> y
33 False
34 >>> y = True * 2
35 >>> y
36 2      

  代碼說明:

  第4-5行,複數乘法顯示結果

  第6-7行,複數乘方顯示結果

  第8行,将複數運算結果放到一個變量中

  第9-10行,擷取複數變量的實部

  第11-12行,擷取複數變量的虛部

  第13-14行,調用内部函數擷取浮點的近似值,四舍五入方式

  第15-16行,調用内部函數擷取浮點的近似值,四舍五入方式

  第17行,導入數學庫

  第18-19行,應用數學庫中函數擷取浮點數的最大整數

  第20-24行,輸入部分内容按下table鍵之後的自動補全後的内容,最終選擇需要的函數,并顯示結果

  第25,29行,定義bool變量,并顯示結果

  第26-27行,顯示x的結果,及結果顯示

  第30-31行,bool變量運算及結果顯示

  第32-33行,bool變量本身沒有變化

  第34-36行,bool變量算術運算時,隻能是1或0中的一個值

二、清單:

  1、清單是資料的集合,并且資料可以不是同一種類型;

  2、清單中的資料可以通過索引通路,可以從頭開始,也可以從尾開始

  3、通過切片擷取新的清單

  4、清單有自己的内置函數和運算符

  5、清單的資料可以被修改,可以用list元組将轉換成清單

1 Python 3.8.0 (default, Oct 23 2019, 18:51:26) 
 2 [GCC 9.2.0] on linux
 3 Type "help", "copyright", "credits" or "license" for more information.
 4 >>> x = ["first", '2th', 3, 4.999, True]
 5 >>> x[0]
 6 'first'
 7 >>> x[-1]
 8 True
 9 >>> x[2]
10 3
11 >>> x[-3]
12 3
13 >>> x
14 ['first', '2th', 3, 4.999, True]
15 >>> x[-1:]
16 [True]
17 >>> x[-5:]
18 ['first', '2th', 3, 4.999, True]
19 >>> x[:-1]
20 ['first', '2th', 3, 4.999]
21 >>> x[::2]
22 ['first', 3, True]      

 代碼說明:

  第4行:定義清單x,每個元素類型都不相同

  第13行:列出清單的所有元素

  第5-6行:通過索引通路清單元素,索引正向從0開始,到長度-1結束

  第7-8行:通過索引通路清單元素,索引反向從-1開始,到-長度結束

  第9-13行:用兩種方式通路清單的同一個元素

  第15-16行:對清單切片,從-1到結束

  第17-18行:對清單切片,從-5到結束

  第19-20行:對清單切片,從開始到-1,但是不包含-1所在的元素

  第21-22行:對清單切片,從開始到結束,但是增幅以2為增加機關

也可以調用清單的函數:其他内部函數可以通過指令help(list)檢視python幫助檔案:

Python 3.8.0 (default, Oct 23 2019, 18:51:26) 
[GCC 9.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> x=["first", '2th', 3, 4.999, True]
>>> x
['first', '2th', 3, 4.999, True]
>>> x.reverse()
>>> x
[True, 4.999, 3, '2th', 'first']                                                                        
>>> x                                                                                                   
[True, 4.999, 3, '2th', 'first']                                                                        
>>> x.reverse()                                                                                         
>>> x                                                                                                   
['first', '2th', 3, 4.999, True]                                                                        
>>> len(x)                                                                                              
5      

三、元組help(tuple)檢視幫助:

  1、元組是資料的集合,并且資料可以不是同一種類型;

  2、元組中的資料可以通過索引通路,可以從頭開始,也可以從尾開始

  3、通過切片擷取新的元組

  4、元組有自己的内置函數和運算符,元組用()包圍即可

  5、元組的資料不可以被修改,但是可以被删除,元組自己的方法隻有count和index,可以用tuple将清單轉換成元組,其餘和清單一樣

四、字典:

  1、和清單差不多,但是存儲的資料主要是鍵值對,鍵要求是不能修改的唯一值,值可以是任意類型

  2、也有自己的方法可以用help(dict)檢視幫助 

1 >>> help(dict)
 2 
 3 >>> x={1:"one", 2:"two", 3:"three"}
 4 >>> x
 5 {1: 'one', 2: 'two', 3: 'three'}
 6 >>> x[4]="four"
 7 >>> x
 8 {1: 'one', 2: 'two', 3: 'three', 4: 'four'}
 9 >>> x[1]
10 'one'
11 >>> x[2]
12 'two'
13 >>> x[3]
14 'three'
15 >>> x.get(1, "not avilable")
16 'one'
17 >>> x.get(5, "not avilable")
18 'not avilable'      

  代碼很簡單,不說明了。

 五、集合:

  有對象組成的無序集,隻關心對象的存在性和唯一性到可以考慮使用集合類型,像是沒有鍵的字典一樣。

1 >>> y=set([1, 2, 3, 4, 5, 5, 3, 2])
 2 >>> y
 3 {1, 2, 3, 4, 5}
 4 >>> 1 in y
 5 True
 6 >>> 8 in y
 7 False
 8 >>> z = ([1, 2, 3, 4], [5, 5, 3, 2], "sample", 'hello')
 9 >>> z
10 ([1, 2, 3, 4], [5, 5, 3, 2], 'sample', 'hello')
11 >>> 3 in z
12 False
13 >>> sample in z
14 Traceback (most recent call last):
15   File "<stdin>", line 1, in <module>
16 NameError: name 'sample' is not defined
17 >>> 'sample' in z
18 True      

六、字元串(help(strq):

  1、字元串是表示字元資訊的重要工具,是不可修改的資料類型

  2、字元串可以被’‘   “”   ‘’‘ ’‘’包圍

  3、字元串可以包含制表符和換行符号。

  4、字元串也有操作符(in、+、*)

  5、字元串也有内置函數(len、max、和min)

  6、字元串也可以索引和切片

  7、字元串類型本身有很多處理字元串的方法,在re子產品中也有字元串的處理函數,若想檢視re的幫助,需要先import  re,再help()指令即可

七、檔案對象:

  python通過檔案對象通路檔案,完成檔案的讀取或寫入。

  檔案的寫入:

1 >>> f=open("newfile", "w")
2 >>> f.write("First line with necessary newline character\n")
3 44
4 >>> f.write("Second line with sample newline character!\n")
5 43
6 >>> f.close()      

  檔案的讀取:

1 >>> g = open("newfile", "r")
2 >>> line1=g.read
3 g.read(       g.readable(   g.readline(   g.readlines(  
4 >>> line1=g.readline()
5 >>> line2=g.readline()
6 >>> print(line1, line2)
7 First line with necessary newline character
8  Second line with sample newline character!      

  無論如何,一定要把檔案對象關閉。

人就像是被蒙着眼推磨的驢子,生活就像一條鞭子;當鞭子抽到你背上時,你就隻能一直往前走,雖然連你也不知道要走到什麼時候為止,便一直這麼堅持着。

下一篇: 期末總結