1. 程式人生 > >python資料型別01

python資料型別01

文章目錄


資料型別是不允許改變的,這就意味著如果改變 Number 資料型別的值,將重新分配記憶體空間

數值型別

  • 整型(int) - 通常被稱為是整型或整數,是正或負整數,不帶小數點。
  • 浮點型(floating point real values) - 浮點型由整數部分與小數部分組成,浮點型也可以使用科學計數法表示(2.5e2 = 2.5 x 102 = 250)
  • 複數(complex numbers) - 複數由實數部分和虛數部分構成,可以用a + bj,或者complex(a,b)表示, 複數的實部a和虛部b都是浮點型。

長整型(long integers) - 無限大小的整數,整數最後是一個大寫或小寫的L。Python3 整型是沒有限制大小的,可以當作 Long 型別使用,所以 Python3 沒有 Python2 的 Long 型別

整型(int)

在32位機器上,整數的位數為32位,取值範圍為-231~231-1,即-2147483648~2147483647

在64位系統上,整數的位數為64位,取值範圍為-263~2

63-1,-9223372036854775808~9223372036854775807

var1 = 1
var2 = 10
var3 = 6

del語句刪除一些 Number 物件引用

del var1
del var2, var3

long(長整型)

跟C語言不同,Python的長整數沒有指定位寬,即:Python沒有限制長整數數值的大小,但實際上由於機器記憶體有限,我們使用的長整數數值不可能無限大。

注意,自從Python2.2起,如果整數發生溢位,Python會自動將整數資料轉換為長整數,所以如今在長整數資料後面不加字母L也不會導致嚴重後果了。

199**200
5896784843701866315830202306247774762972638982405042480372238189012365044783448228280875028875684277127088378956152713197320945688565673304729984010537727226637040943165593052367979000124463424161858464934947067680269075228341562695042312463815883441507512003942871781958205145461989665812045325106145074842960481661294209203262577314061569045152694421556602495323466256365196176516277494056642637786305854049111948156579863012416891273717889898672613595960001

浮點數

浮點數也就是小數,之所以稱為浮點數,是因為按照科學記數法表示時,一個浮點數的小數點位置是可變的,比如,1.23x109和12.3x108是完全相等的。浮點數可以用數學寫法,如1.23,3.14,-9.01,等等。但是對於很大或很小的浮點數,就必須用科學計數法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以寫成1.2e-5,等等。

整數和浮點數在計算機內部儲存的方式是不同的,整數運算永遠是精確的(除法難道也是精確的?是的!),而浮點數運算則可能會有四捨五入的誤差。

0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1
0.7999999999999999

複數

複數是指能寫成如下形式的數a+bi,這裡a和b是實數,i是虛數單位(即-1開根)。在複數a+bi中,a稱為複數的實部,b稱為複數的虛部,i稱為虛數單位。當虛部等於零時,這個複數就是實數;當虛部不等於零時,這個複數稱為虛數

#複數由實數部分和虛數部分構成,可以用a + bj,或者complex(a,b)表示, 複數的實部a和虛部b都是浮點型

complex(1,5)
(1+5j)

有理數

數學上,有理數是一個整數a和一個非零整數b的比,例如3/8,通則為a/b,又稱作分數。0也是有理數。有理數是整數和分數的集合,整數也可看做是分母為一的分數。有理數的小數部分是有限或為無限迴圈的數。不是有理數的實數稱為無理數,即無理數的小數部分是無限不迴圈的數。

無理數

無理數,也稱為無限不迴圈小數,不能寫作兩整數之比。若將它寫成小數形式,小數點之後的數字有無限多個,並且不會迴圈。 常見的無理數有非完全平方數的平方根、圓周率(Pi)和e

實數

實數,是有理數(有限或為無限迴圈的數)和無理數(無限不迴圈小數)的總稱。

科學記數法

把一個絕對值大於10的實數記為a×10n的形式(1≤|a|<10,n為整數),這種記數法叫做科學記數法。這是一種記數的方法。例如19971400000000=1.99714×10^13。計算器或電腦表達10的的冪是一般是用E或e,也就是1.99714E13=19971400000000

不同進製表示

  • 0o數字 0O數字 表示八進位制整數 0o24
  • 0x數字 0X數字 表示十六進位制整數 0x3F ,0X3F
  • 0b數字 0B數字 表示二進位制整數 0b101 , 0B101

數值型別轉換

  • bin()將整數x轉換為二進位制字串
  • chr(i) 返回整數i對應的ASCII字元。與ord()作用相反。i取值[0,255]之間的正數
  • ord() 一個字串表示的字元轉換為字元相對應的整數
  • int() 將一個數轉化為整數
  • long(x [,base ]) 將x轉換為一個長整數
  • float(x ) 將x轉換到一個浮點數
  • complex(real [,imag ]) 建立一個複數
  • str() 一般是將數值轉成字串
r = bin(10)
print('將整數10轉換為二進位制字串:%s'%r)

c = chr(66)
print('整數66對應的ASCII字元:%s'%c)

i = ord("t")
print('字元t轉換對應的整數%s'%i)

r= int(12.0)
print("浮點數12.0轉換為整數%s"%r)
print("浮點數12.0轉換為整數%d"%r)

print("將0xb用十進位制數表示%s"%int("0xb",16))
print("將八進位制10用十進位制數表示%s"%int("10",8))
print("將字元10用十進位制數表示%s"%int("10",16))
print("將字元10用十進位制數表示%s"%int("10",10))

a = 1.524464444444444444
b = float('%.4f'%a)
print("控制精度,保留4位小數,結果為:%s"%b)

print('字元37.21轉換為浮點數:%s'%float('37.21'))
print('整數234轉換為浮點數:%s'%float(234))

print('整數234轉換為字元:%s'%str(234))
將整數10轉換為二進位制字串:0b1010
整數66對應的ASCII字元:B
字元t轉換對應的整數116
浮點數12.0轉換為整數12
浮點數12.0轉換為整數12
將0xb用十進位制數表示11
將八進位制10用十進位制數表示8
將字元10用十進位制數表示16
將字元10用十進位制數表示10
控制精度,保留4位小數,結果為:1.5245
字元37.21轉換為浮點數:37.21
整數234轉換為浮點數:234.0
整數234轉換為字元:234
  • hex(x) 將一個整數轉換為一個十六進位制字串
  • oct(x ) 將一個整數轉換為一個八進位制字串
print("將整數12轉換為十六進位制為%s"%hex(2))
print("將整數12轉換為八進位制為%s"%oct(12))
print("將0xb用十進位制數表示%s"%int("82d1",16))
將整數12轉換為十六進位制為0x2
將整數12轉換為八進位制為0o14
將0xb用十進位制數表示33489

資料型別資訊獲取

#函式type(),直接給出數的資料型別
print(type(12.0))
print(type(False))
print(type(1000))
<class 'float'>
<class 'bool'>
<class 'int'>
#函式isinstance()需要給出需要判斷的數和一個數據型別
print(isinstance('I love u',float))
print(isinstance('I love u',str))
False
True

isinstance 和 type 的區別在於:

  • type()不會認為子類是一種父類型別。
  • isinstance()會認為子類是一種父類型別。
class A:
    pass

class B(A):
    pass

print(isinstance(A(), A))

print(type(A()) == A )

print(isinstance(B(), A))
print(type(B()) == A)

print(type(A()))
print(type(B()))

print(type(A()))
print(type(B()))
True
True
True
False
<class '__main__.A'>
<class '__main__.B'>
<class '__main__.A'>
<class '__main__.B'>

math 模組、cmath 模組

Python 中數學運算常用的函式基本都在 math 模組、cmath 模組中。

Python math 模組提供了許多對浮點數的數學運算函式。

Python cmath 模組包含了一些用於複數運算的函式。

cmath 模組的函式跟 math 模組函式基本一致,區別是 cmath 模組運算的是複數,math 模組運算的是數學運算。

import math
# 檢視 math 檢視包中的內容:
# dir(math)

python數學函式

函式 返回值 ( 描述 )
abs(x) 返回數字的絕對值,如abs(-10) 返回 10
ceil(x) 返回數字的上入整數,如math.ceil(4.1) 返回 5
cmp(x, y) 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1(python3中不存在)
exp(x) 返回e的x次冪(ex),如math.exp(1) 返回2.718281828459045
fabs(x) 返回數字的絕對值,如math.fabs(-10) 返回10.0
floor(x) 返回數字的下舍整數,如math.floor(4.9)返回 4
log(x) 如math.log(math.e)返回1.0,math.log(100,10)返回2.0
log10(x) 返回以10為基數的x的對數,如math.log10(100)返回 2.0
max(x1, x2,…) 返回給定引數的最大值,引數可以為序列。
min(x1, x2,…) 返回給定引數的最小值,引數可以為序列。
modf(x) 返回x的整數部分與小數部分,兩部分的數值符號與x相同,整數部分以浮點型表示。
pow(x, y) x**y 運算後的值。
round(x [,n]) 返回浮點數x的四捨五入值,如給出n值,則代表舍入到小數點後的位數。
sqrt(x) 返回數字x的平方根

abs(x)

print("abs(-45) : ", abs(-45)) 
print("abs(100.12) : ", abs(100.12))
print("abs(119) : ", abs(119)) 
abs(-45) :  45
abs(100.12) :  100.12
abs(119) :  119

ceil()

import math   # This will import math module

print("math.ceil(-45.17) : ", math.ceil(-45.17))
print("math.ceil(100.12) : ", math.ceil(100.12))
print("math.ceil(100.72) : ", math.ceil(100.72)) 
print("math.ceil(119) : ", math.ceil(119)) 
print("math.ceil(math.pi) : ", math.ceil(math.pi)) 
math.ceil(-45.17) :  -45
math.ceil(100.12) :  101
math.ceil(100.72) :  101
math.ceil(119) :  119
math.ceil(math.pi) :  4

cmp()

Python 3.X 的版本中已經沒有 cmp 函式,如果你需要實現比較功能,需要引入 operator 模組,適合任何物件,包含的方法有:

  • operator.lt(a, b)
  • operator.le(a, b)
  • operator.eq(a, b)
  • operator.ne(a, b)
  • operator.ge(a, b)
  • operator.gt(a, b)
  • operator._lt_(a, b)
  • operator._le_(a, b)
  • operator._eq_(a, b)
  • operator._ne_(a, b)
  • operator._ge_(a, b)
  • operator._gt_(a, b)
#print("cmp(80, 100) : ", cmp(80, 100))
import operator
print(operator.eq('hello', 'name'))
print(operator.lt(80,100))
print(operator.__lt__(80,100))
False
True
True

exp()

import math   # 匯入 math 模組

print ("math.exp(-45.17) : ", math.exp(-45.17))
print ("math.exp(100.12) : ", math.exp(100.12))
print ("math.exp(100.72) : ", math.exp(100.72))
print ("math.exp(math.pi) : ", math.exp(math.pi))
math.exp(-45.17) :  2.4150062132629406e-20
math.exp(100.12) :  3.0308436140742566e+43
math.exp(100.72) :  5.522557130248187e+43
math.exp(math.pi) :  23.140692632779267

fabs()

fabs() 函式類似於 abs() 函式,但是他有兩點區別:

  • abs() 是內建函式。 fabs() 函式在 math 模組中定義。
  • fabs() 函式只對浮點型跟整型數值有效。 abs() 還可以運用在複數中。
import math  

print ("math.fabs(-45.17) : ", math.fabs(-45.17))
print ("math.fabs(100.12) : ", math.fabs(100.12))
print ("math.fabs(100.72) : ", math.fabs(100.72))
print ("math.fabs(math.pi) : ", math.fabs(math.pi))
math.fabs(-45.17) :  45.17
math.fabs(100.12) :  100.12
math.fabs(100.72) :  100.72
math.fabs(math.pi) :  3.141592653589793

floor()

import math   

print ("math.floor(-45.17) : ", math.floor(-45.17))
print ("math.floor(100.12) : ", math.floor(100.12))
print ("math.floor(100.72) : ", math.floor(100.72))
print ("math.floor(math.pi) : ", math.floor(math.pi))
math.floor(-45.17) :  -46
math.floor(100.12) :  100
math.floor(100.72) :  100
math.floor(math.pi) :  3

log()

import math  

print ("math.log(100.12) : ", math.log(100.12))
print ("math.log(100.72) : ", math.log(100.72))
print ("math.log(math.pi) : ", math.log(math.pi))

math.exp(math.log(100.12))
math.log(100.12) :  4.6063694665635735
math.log(100.72) :  4.612344389736092
math.log(math.pi) :  1.1447298858494002





100.12

log10()

import math   

print ("math.log10(100.12) : ", math.log10(100.12))
print ("math.log10(100.72) : ", math.log10(100.72))
print ("math.log10(119) : ", math.log10(119))
print ("math.log10(math.pi) : ", math.log10(math.pi))
math.log10(100.12) :  2.0005208409361854
math.log10(100.72) :  2.003115717099806
math.log10(119) :  2.075546961392531
math.log10(math.pi) :  0.4971498726941338

max()

print ("max(80, 100, 1000) : ", max(80, 100, 1000))
print ("max([80, 100, 1000]) : ", max([80, 100, 1000]))
print ("max(-20, 100, 400) : ", max(-20, 100, 400))
print ("max(-80, -20, -10) : ", max(-80, -20, -10))
print ("max(0, 100, -400) : ", max(0, 100, -400))
max(80, 100, 1000) :  1000
max([80, 100, 1000]) :  1000
max(-20, 100, 400) :  400
max(-80, -20, -10) :  -10
max(0, 100, -400) :  100

min()

print ("min(80, 100, 1000) : ", min(80, 100, 1000))
print ("min(-20, 100, 400) : ", min(-20, 100, 400))
print ("min(-80, -20, -10) : ", min(-80, -20, -10))
print ("min(0, 100, -400) : ", min(0, 100, -400))
min(80, 100, 1000) :  80
min(-20, 100, 400) :  -20
min(-80, -20, -10) :  -80
min(0, 100, -400) :  -400

modf()

import math   

print ("math.modf(100.12) : ", math.modf(100.12))
print ("math.modf(100.72) : ", math.modf(100.72))
print ("math.modf(119) : ", math.modf(119))
print ("math.modf(math.pi) : ", math.modf(math.pi))
math.modf(100.12) :  (0.12000000000000455, 100.0)
math.modf(100.72) :  (0.7199999999999989, 100.0)
math.modf(119) :  (0.0, 119.0)
math.modf(math.pi) :  (0.14159265358979312, 3.0)

pow()

pow() 通過內建的方法直接呼叫,內建方法會把引數作為整型,而 math 模組則會把引數轉換為 float

import math  

print ("math.pow(100, 2) : ", math.pow(100, 2))
print("使用內建,檢視輸出結果區別")
print ("pow(100, 2) : ", pow(100, 2))
print ("math.pow(100, -2) : ", math.pow(100, -2))
print ("math.pow(2, 4) : ", math.pow(2, 4))
print ("math.pow(3, 0) : ", math.pow(3, 0))
math.pow(100, 2) :  10000.0
使用內建,檢視輸出結果區別
pow(100, 2) :  10000
math.pow(100, -2) :  0.0001
math.pow(2, 4) :  16.0
math.pow(3, 0) :  1.0

round()

print ("round(70.23456) : ", round(70.23456))
print ("round(56.659,1) : ", round(56.659,1))
print ("round(80.264, 2) : ", round(80.264, 2))
print ("round(100.000056, 3) : ", round(100.000056, 3))
print ("round(-100.000056, 3) : ", round(-100.000056, 3))
round(70.23456) :  70
round(56.659,1) :  56.7
round(80.264, 2) :  80.26
round(100.000056, 3) :  100.0
round(-100.000056, 3) :  -100.0

sqrt()

import math 

print ("math.sqrt(100) : ", math.sqrt(100))
print ("math.sqrt(7) : ", math.sqrt(7))
print ("math.sqrt(math.pi) : ", math.sqrt(math.pi))
math.sqrt(100) :  10.0
math.sqrt(7) :  2.6457513110645907
math.sqrt(math.pi) :  1.7724538509055159

python隨機數函式

隨機數可以用於數學,遊戲,安全等領域中,還經常被嵌入到演算法中,用以提高演算法效率,並提高程式的安全性

函式 描述
choice(seq) 從序列的元素中隨機挑選一個元素,比如random.choice(range(10)),從0到9中隨機挑選一個整數。
randrange ([start,] stop [,step]) 從指定範圍內,按指定基數遞增的集合中獲取一個隨機數,基數預設值為1
random() 生成一個0到1的隨機浮點數,0<=n<1.0
seed([x]) 改變隨機數生成器的種子seed。如果你不瞭解其原理,你不必特別去設定seed,Python會幫你選擇seed
shuffle(lst) 將序列的所有元素隨機排序
uniform(x, y) 生成一個指定範圍的隨機浮點數,它在[x,y]範圍內
randint(x, y) 生成一個指定範圍內的整數,它在[x,y]範圍內
sample 從指定序列中隨機獲取指定長度的片斷

choice()

import random

print ("從 range(100) 返回一個隨機數 : ",random.choice(range(100)))
print ("從列表中 [1, 2, 3, 5, 9]) 返回一個隨機元素 : ", random.choice([1, 2, 3, 5, 9]))
print ("從字串中 'Runoob' 返回一個隨機字元 : ", random.choice('Runoob'))
從 range(100) 返回一個隨機數 :  28
從列表中 [1, 2, 3, 5, 9]) 返回一個隨機元素 :  5
從字串中 'Runoob' 返回一個隨機字元 :  n

randrange()

import random
 
# 從 1-100 中選取一個奇數
print ("randrange(1,100, 2) : ", random.randrange(1, 100, 2))
 
# 從 0-99 選取一個隨機數
print ("randrange(100) : ", random.randrange(100))

#從[10,12,14,16,...,96,98]序列中獲取一個隨機數
print("random.randrange(10,100,2):",random.randrange(10,100,2))
randrange(1,100, 2) :  25
randrange(100) :  7
random.randrange(10,100,2): 62

random()

import random

# 第一個隨機數
print ("random() : ", random.random())

# 第二個隨機數
print ("random() : ", random.random())


# 實現 100-120 隨機小數
print((random.random()*20)+100)
random() :  0.1605165979964044
random() :  0.4380019858706685
115.4696868547905

seed()

import random

random.seed()
print ("使用預設種子生成隨機數:", random.random())
random.seed()
print ("使用預設種子生成隨機數:", random.random())

random.seed(10)
print ("使用整數種子生成隨機數:", random.random())
random.seed(10)
print ("使用整數種子生成隨機數:", random.random(
            
           

相關推薦

python資料型別01

文章目錄 數值型別 整型(int) long(長整型) 浮點數 複數 不同進製表示 數值型別轉換 資料型別資訊獲取 math 模組、cmath 模組 python數

Python從入門到放棄_資料型別01

1.整型   在32 位系統中 可用的數字範圍:     32 -2 **31 ~ 2**31-1   在64 位的系統中,可用的數字範圍:     # 64 -2 **63 ~ 2**63-1   整型(int)的型別   long:    python

第二篇 Python資料型別、字元編碼、檔案處理

一、引子     1、什麼是資料?         x=10,10是我們要儲存的資料     2、為何資料要分不同的型別    

python資料型別(string/list/tuple/dict)內建方法

Python 字串常用方法總結 明確:對字串的操作方法都不會改變原來字串的值 1,去掉空格和特殊符號 name.strip()  去掉空格和換行符 name.strip('xx')  去掉某個字串 name.lstrip()  去掉左邊的空格和換行符

python資料型別之列表(list)和其常用方法

列表是python常用資料型別之一,是可變的,可由n = []建立,也可由n = list()建立,第一種方法更常用。   常用方法總結:   # 建立方法 n = [] 或者 n = list() # index 查詢索引值 li = ['Edward', 'Mark'

python資料型別之字典(dict)和其常用方法

字典的特徵: key-value結構key必須可hash,且必須為不可變資料型別、必須唯一。 # hash值都是數字,可以用類似於2分法(但比2分法厲害的多的方法)找。可存放任意多個值、可修改、可以不唯一無序查詢速度快常用方法: info = {'stu01': 'alex', 'stu02':

python資料型別之集合(set)和其常用方法

集合是一個無序的,不重複的資料組合作用(集合的重點):1.去重,把一個列表變成集合就自動去重了2.關係測試,測試兩組資料庫之前的交集、差集、並集等關係 s = {1, 1, 2, 2, 3, 4, 'a', 'a', '!', '!'} print(type(s)) # <class 'set

一起學Python——資料型別詳解

和學習其他程式語言一樣,首先要了解一門語言的資料型別。 Python的資料型別有整型、浮點型、字串、布林型、日期時間型別、list列表、set集合、tuple元組、dict詞典等。 1、整型 就是數學中的整數,包括負整數。 定義整型的方法: a = 100 b = -100 print(a) print

Python 資料型別之 集合 set

####集合 集合是無序的,不重複的資料集合,它裡面的元素是可雜湊的(不可變型別),但是集合本身是不可雜湊(所以集合做不了字典的鍵)的。以下是集合最重要的兩點: 1.去重,把一個列表變成集合,就自動去重了。 2.關係測試,測試兩組資料之前的交集、差集、並集等關係。 #建立集合 ##建立集合 s

Python資料型別(2)列表和元組

列表和元組 列表和元組都屬於序列型別(sequence)。序列物件中的元素都是有序存放的,可以通過編號訪問其元素。兩者最大的區別在於列表是一種可變序列支援修改其元素,而元組是一種不可變序列,不能修改其元素。 列表 列表(list)是一種可變序列。列表用方括號定義,元素間用逗號隔開。列

Python資料型別(1)數字資料型別

Python資料型別簡介 Python語言是面向物件的一門程式語言。Python中的資料型別其實就是Python的內建基本物件。內建物件主要包括簡單型別和容器型別。簡單型別主要是數值型資料,容器型別是可以包含其他物件的集體,如序列,元組,對映,集合等。Python中的資料型別也是物件,資料型別像

Python資料型別轉換規則

Python 支援四種不同的數值型別,分別是整型、長整型、浮點型和複數,這些型別的資料有各自的特點,在使用過程中也可以進行型別轉換,具體轉換方法如下: int(x [,base ]) 將x轉換為一個整數 long(x [,base ]) 將x轉換為一個長整數 float(x ) 將x轉換到一

Python資料型別—運算子

常用程式檔案字尾: ​ .py python檔案 ​ .c c語言原始檔 ​ .cpp c++語言檔案 ​ .java java語言檔案 Python解釋執行器 ​ Python(python2的解釋執行器) ​ Python3 Open terminal h

Python資料型別、運算子、流程語句(條件結構,迴圈結構)斐波那契數列、99乘法表(for,while)

一、Python變數型別 型別 數值型、字串、元組、列表、字典等 例:c/c++、java是強型別的程式語言,一個變數在使用前確定型別,在程式期間,變數的型別是不能改變的; 指令碼語言:shell、python、perl、javaScript弱型別; Pytho

python資料型別、if判斷語句

  python的資料型別:   int(整型)  float(浮點型)  #相較c++,去除了char、long、longlong。。。   str(字串)            #同等c++ sting型別   list(列表)  dict(字典)    #對比c,c++中的陣列

python資料型別之 集合

1.集合的定義 格式:集合名 = {元素1,元素2,...} 例:my_set = {1, 3, 5} 集合是無序的-> 不支援下標索引 集合是可變的資料型別 集合中的元素是唯一的 集合一般用於元組或者列表中的元素去重 定義一個空的集合  my_set = s

Python-資料型別 主鍵auto_increment

1.詳細的建表語句 ***** create table 表名( 欄位名1 資料型別[(長度) 約束條件], 欄位名2 資料型別[(長度) 約束條件] ); 解釋: 型別:使用限制欄位必須以什麼樣的資料型別傳值 約束條件:約束條件是在型別之外新增一種額

Python自動化學習筆記(四)——Python資料型別(集合set,元組tuple)、修改檔案、函式、random常用方法

1.修改檔案的兩種方式 1 #第一種 2 with open('users','a+') as fw: #用a+模式開啟檔案,使用with這種語法可以防止忘記close檔案 3 fw.seek(0) #移動檔案指標到最前面,然後才能讀到內容 4 result=fw.read()

Python資料型別轉換函式

資料型別轉換函式 函 數 作 用 int(x) 將 x 轉換成整數型別 float(x) 將 x 轉換成浮點數型別 complex(real[,imag]) 建立一個複數

Python資料型別str、list、tuple、dict、set

字串 字串常見的功能 name = 'fe_cow' print name.capitalize() # 首字母大寫 :Fe_cow print name.count('_') # 統計字串出現在這個字元中的個數: 1 print name.center(