前幾節瞭解了Python的不一樣數據類型,有小夥伴會問,不一樣的數據類型之間是否能夠相互轉換?確定是能夠的,本篇博文主要記錄數字類型的轉換,其餘類型的相互轉換會在下幾節記錄,Here we go!python
經過前幾節,咱們知道Python數字的數據類型有:整型、長整型、浮點型、和複數,它們之間是如何轉換的呢?亦或者它們是如何轉換爲其餘數據類型呢?先來看全部的方法:dom
int(x [,base ]) # 將 x 轉換爲一個整數 float(x ) # 將 x 轉換到一個浮點數 complex(real [,imag ]) # 建立一個複數 str(x ) # 將對象 x 轉換爲字符串 repr(x ) # 將對象 x 轉換爲表達式字符串 eval(str ) # 用來計算在字符串中的有效Python表達式,並返回一個對象 tuple(s ) # 將序列 s 轉換爲一個元組 list(s ) # 將序列 s 轉換爲一個列表 chr(x ) # 將一個整數轉換爲一個字符 ord(x ) # 將一個字符轉換爲它的整數值 hex(x ) # 將一個整數轉換爲一個十六進制字符串 oct(x ) # 將一個整數轉換爲一個八進制字符串
bin(x) # 將一個整數轉換爲一個二進制字符串
咱們先來申明一個變量 num1 = 6 ,以後用 type() 函數查看其數據類型,任何數據類型均可以用此函數查看:ide
In [103]: num1 = 6 In [104]: type(num1) Out[104]: int
能夠看到 num1 默認是 int 類型的,再來建立 num2 = 6.6 ,再次查看其數據類型:函數
In [105]: num2 = 6.6 In [106]: type(num2) Out[106]: float
能夠看到 num2 默認是 float 類型的,也就是說,當在Python中建立一個整數的時候,默認的數據類型爲 int ,建立一個小數的時候,默認的數據類型是 float ,建立完後想要修改其數據類型就要用到上面的類型轉換函數了ui
In [110]: float(num1)
Out[110]: 6.0
In [114]: int(6.6) Out[114]: 6 In [115]: int(-5.5) Out[115]: -5 # int函數會把小數位所有抹去,保留整數部分
In [116]: complex(5,8) Out[116]: (5+8j) # complex(實部,虛部),虛部能夠省略
In [117]: str(5) Out[117]: '5' In [118]: str(6.6) Out[118]: '6.6'
In [123]: s = 'print("Hello,world!")' In [124]: s Out[124]: 'print("Hello,world!")' In [125]: eval(s) Hello,world! # 能夠看到將字符串執行了
In [130]: tuple([1,2,3])
Out[130]: (1, 2, 3)
In [139]: chr(56) Out[139]: '8' # 這裏涉及ASC碼的內容
In [142]: ord('8') Out[142]: 56 # 這裏涉及ASC碼的內容
In [143]: hex(15) Out[143]: '0xf' # 十六進制的數以 0x 開頭
In [144]: oct(20) Out[144]: '0o24' # 八進制以 0o 開頭
In [145]: bin(5) Out[145]: '0b101' # 二進制以 0b 開頭
提及數學方法,確定再也不是簡單的加減乘除乘方等基礎運算了,數學方法更可能是取絕對值、指數運算、對數運算、冪運算,開方運算以及三角函數等,這些方法涉及到的領域也是至關廣闊,這部分也是很是重要的,每一個人都應該熟練應用,尤爲是想要去作數據方面工做的小夥伴。spa
Python中大量的數學方法並無在內置函數中,而是在兩個模塊中,在使用數學方法以前,必須在Python程序中根據須要導入math模塊或者cmath模塊。math模塊的對象主要是實數,cmath模塊主要面向複數,兩者包含的方法基本一致,根據實際使用需求導入便可,導入方法:code
import math
回車之後如何沒有任何報錯信息就證實導入成功了,關於模塊的詳細概念會在以後的一節專門講到,這裏就先導入使用,不去作太多的解釋。orm
導入之後,能夠查看其幫助信息,還記得 help() 函數嗎:對象
In [146]: import math In [147]: help(math) Help on built-in module math: NAME math DESCRIPTION This module is always available. It provides access to the mathematical functions defined by the C standard. FUNCTIONS acos(...) acos(x) Return the arc cosine (measured in radians) of x. acosh(...) acosh(x) Return the inverse hyperbolic cosine of x. asin(...) asin(x) Return the arc sine (measured in radians) of x. -- More --
能夠看到 math 模塊的幫助信息很全很複雜,一頁都展現不完(--- More ---),能夠按空格健翻頁或者回車鍵翻一行,Q鍵退出;若是隻是想要快速查看其包含的方法,能夠用 dir() 函數:blog
In [148]: dir(math) Out[148]: ['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']
In [149]: import cmath In [150]: dir(cmath) Out[150]: ['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'cos', 'cosh', 'e', 'exp', 'isclose', 'isfinite', 'isinf', 'isnan', 'log', 'log10', 'phase', 'pi', 'polar', 'rect', 'sin', 'sinh', 'sqrt', 'tan', 'tanh']
能夠看到math模塊和cmath模塊都有大量的方法,而且兩者方法基本上同樣,接下來,以math模塊爲例,詳細的介紹其包含的方法
想要查看模塊裏面具體方法的幫助信息時,能夠用 help() 函數查看:
In [173]: help(math.exp) # 注意是 math.exp, 不是 math.exp() Help on built-in function exp in module math: exp(...) exp(x) Return e raised to the power of x.
注意:查看具體方法時,只寫方法名稱便可,不要加括號,不然會報錯!
abs(x) # 返回數字的絕對值,如abs(-10) 返回 10 math.ceil(x) # 返回數字的上入整數,如math.ceil(4.1) 返回 5 cmp(x, y) # 若是 x < y 返回 -1, 若是 x == y 返回 0, 若是 x > y 返回 1 math.exp(x) # 返回e的x次冪(ex),如math.exp(1) 返回2.718281828459045 math.fabs(x) # 返回數字的絕對值,如math.fabs(-10) 返回10.0 math.floor(x) # 返回數字的下舍整數,如math.floor(4.9)返回 4 math.log(x) # 如math.log(math.e)返回1.0,math.log(100,10)返回2.0 math.log10(x) # 返回以10爲基數的x的對數,如math.log10(100)返回 2.0 max(x1, x2,...) # 返回給定參數的最大值,參數能夠爲序列。 min(x1, x2,...) # 返回給定參數的最小值,參數能夠爲序列。 math.modf(x) # 返回x的整數部分與小數部分,兩部分的數值符號與x相同,整數部分以浮點型表示。 math.pow(x, y) # x**y 運算後的值。 round(x [,n]) # 返回浮點數x的四捨五入值,如給出n值,則表明舍入到小數點後的位數。 math.sqrt(x) # 返回數字x的平方根
能夠看到,上面有些方法是直接寫出的,如 abs(x) ,而有一些方法前面有 math. ,如 math.exp(x),這實際上是有緣由的,直接寫出的表示是系統內置函數,不用導入任何模塊就可使用,而加前綴的表示這個方法是這個模塊裏面的,必須加前綴,否者會報錯,任何模塊裏面的方法都要加上這個模塊的前綴,例如:
In [159]: import math In [160]: exp(2) --------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-160-840a487878a2> in <module> ----> 1 exp(2) NameError: name 'exp' is not defined # 不加前綴表示這個方法沒有被定義 In [161]: math.exp(2) # 加上前綴就能夠正常使用了 Out[161]: 7.38905609893065
上面的方法就不一一舉例了,要注意 round(x) ,這個函數執行原理是:四捨六入五湊偶,小數位爲5的時候要看前一位,前一位是偶數就捨棄,是奇數就進一
math.acos(x) # 返回x的反餘弦弧度值。 math.asin(x) # 返回x的反正弦弧度值。 math.atan(x) # 返回x的反正切弧度值。 math.atan2(y, x) # 返回給定的 X 及 Y 座標值的反正切值。 math.cos(x) # 返回x的弧度的餘弦值。 math.hypot(x, y) # 返回歐幾里德範數 math.sqrt(x*x + y*y)。 math.sin(x) # 返回的x弧度的正弦值。 math.tan(x) # 返回x弧度的正切值。 math.degrees(x) # 將弧度轉換爲角度,如math.degrees(math.pi/2) , 返回90.0 math.radians(x) # 將角度轉換爲弧度
能夠看到涉及三角函數的方法都在 math 模塊裏面
math.pi # 數學常量 pi(圓周率,通常以π來表示) math.e # 數學常量 e,e即天然常數(天然常數)。
兩個最多見的數字常量,圓周率 pi 和天然常數 e 也在 math 模塊裏面
In [164]: math.pi Out[164]: 3.141592653589793 In [165]: math.e Out[165]: 2.718281828459045
隨機函數常做爲隨機數發生器使用,大量領域會用到隨機數,Python的隨機數基本上都在 random模塊中,具體方法以下:
In [171]: import random In [172]: dir(random) Out[172]: ['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_BuiltinMethodType', '_MethodType', '_Sequence', '_Set', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_acos', '_ceil', '_cos', '_e', '_exp', '_inst', '_log', '_pi', '_random', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', '_warn', 'betavariate', 'choice', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'normalvariate', 'paretovariate', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
其主要函數功能:
random.choice(seq) # 從序列的元素中隨機挑選一個元素,好比random.choice(range(10)),從0到9中隨機挑選一個整數。 random.randrange ([start,] stop [,step]) # 從指定範圍內,按指定基數遞增的集合中獲取一個隨機數,基數缺省值爲1 random.random() # 隨機生成下一個實數,它在[0,1)範圍內。 random.seed([x]) # 改變隨機數生成器的種子seed。若是你不瞭解其原理,你沒必要特別去設定seed,Python會幫你選擇seed。 random.shuffle(lst) # 將序列的全部元素隨機排序 random.uniform(x, y) # 隨機生成下一個實數,它在[x,y]範圍內。