六大資料型別
# python的六大資料型別是Number(四種數字型別) + 五種容器型別
1、Number數字型別
int 整型(整數)
float 浮點型(小數)
bool 布爾型(布林值)
complex 復數
long 大整型(長整型,無限大,python3.X中淘汰,原因:科技、計算機的發展使記憶體廉價)
2、container容器型別
str 字串
list 串列
tuple 元組
set 集合
dict 字典
數字型別資料
int 整型
什么是整型
整型指的就是整數,包括正整數、0、負整數
如何定義整型
# 直接輸入整數,整數是沒有小數點的數,只要有小數點,就不算是整型
# 在定義變數時直接賦值整數,變數的型別就成為整型
intvar = 100 # 整數
print(intvar, type(intvar))
intvar = 100.00 # 不算整數(浮點數)
print(intvar, type(intvar))
# 使用int函式,也就是空的整型
intvar = int() # 默認為0
print(intvar, type(intvar))
其它進制整型的表示方法
# 二進制、八進制、十六進制數:在表示這些數字的時候分別在數字前冠以0b、0o、0x的前綴表示,
# 二進制數
intvar1 = 0b101010101
# 八進制數
intvar2 = 0o713211230
# 十六進制數
intvar3 = 0xabcdef123
# print列印的資料顯示十進制數
print(intvar1, intvar2, intvar3)
float 浮點型
什么是浮點型
浮點型指的就是小數
如何定義浮點型
# 1、直接寫小數
fltvar = 100.1
print(fltvar, type(fltvar))
# 2、科學計數法
# E表示小數點的位置,1.E2表示小數點向右移動兩位,位數不夠用0補位,1E-1反之,
fltvar1 = 1.E2 + 1E-1
print(fltvar1, type(fltvar1))
# 3、使用函式float,空的浮點數
fltvar2 = float()
print(fltvar2, type(fltvar2))
什么是科學計數法
科學記數法是一種記數的方法,把一個數表示成a與10的n次冪相乘的形式
(1≤|a|<10,a不為分數形式,n為整數),這種記數法叫做科學記數法,
當我們要標記或運算某個較大或較小且位數較多時,用科學記數法免去浪費很多空間和時間,
概念:
把一個數表示成a與10的n次冪相乘的形式(1≤|a|<10,a不為分數形式,n為整數),這種記數法叫做科學記數法,
例如:19971400000000=1.99714×10^13,
計算器或電腦表達10的冪是一般是用E或e,
也就是1.99714E13=19971400000000,
bool 布林值
什么是布爾型
在計算機上布爾型代表邏輯上的真偽,布林值的值只有兩種,真和假, True和False,
在python中,乃至計算機科學當中,任何的東西的本質都是True和False,都是非真既假的,這也就是也和計算機的作業原理分不開,比如計算機當中使用二進制來進行作業,都是只有兩種形態來表示的,
如何定義布林值
# 1、直接輸入true或false
# 注意,python中的true和false首字母是大寫的
bolvar1 = True # 真
bolvar2 = False # 假
print(bolvar1, type(bolvar1))
print(bolvar2, type(bolvar2))
# 2、使用bool函式,默認為false
boolvar = bool()
print(boolvar)
complex 復數
什么是復數
復數是由實數和虛陣列成的數,J 表示的是一個平方為-1的數,應為這樣的數在實際當中不存在所以用 J 表示,簡單的來說,復數就是實數+虛數,
j :如果有一個數,它的平方等于-1,那么這個數就是j,科學家認為有表達高精度型別,
如何定義復數
# 1、直接寫復數
cpxvar = 4j
cpxvar1 = 1+4j
cpxvar1 = -4j
# 使用函式complex()
cpxvar2 = complex(10, 20)
容器型別資料
# 說明:容器型別資料當中可以存放任何型別的資料,二級及以上的容器有特殊情況
# 字串容器較為特殊,str當中可以可以存放任何資料的型別,但是任何資料的型別都會變為str
str 字串
什么是字串
字串就是用引號引起來的字符,不管引號內是什么資料,只要在引號內就是字串,
字串特點
可獲取、不可修改、有序
定義字串
# 使用引號引起來的東西都是字串,無論是什么東西,包括所有的引號型別,比如多行注釋
# 1、直接使用引號
# 使用各種各樣的引號都是字串
strvar = 'hello motherland'
strvar1 = "hello my motherland"
# 使用三引號可以跨行,并且要定義變數接受,否則就只是一段注釋
strvar2 = '''
hello motherland
'''
strvar3 = """
hello
my
motherland
"""
print(strvar, type(strvar))
print(strvar1, type(strvar1))
print(strvar2, type(strvar2))
print(strvar3, type(strvar3))
# 即使是其它的資料型別也是字串
strvar = '100' # 引號中是整型
print(strvar, type(strvar))
# 定義空字串,使用str函式 或者是空引號
strvar, strvar2 = str(), ''
print(type(strvar), type(strvar2))
獲取字串中的資料
# python中字串也存在正逆向下標
strvar = 'hello motherland'
res = strvar[-1]
print(res)
res = strvar[1]
print(res)
# 字串是不可修改的
# 修改字串其中的某一個元素
# strvar[-1] = 'm' # error 報錯
list 串列
什么是串列
就是其他語言當中的陣列
特點
可獲取、可修改、有序
定義串列
# 串列中可以存放一切資料,使用中括號包括,使用逗號分隔不同的資料
# 直接定義
msr = 'hello motherland' # 字串變數
lstvar = [1, 2, 3, 'hello china', msr] # 可以存放整型,字串,變數等一切合法的資料型別
print(lstvar, type(lstvar))
# 定義空串列
lstvar, lstvar2 = list(), []
獲取串列容器當中的元素
容器當中的每個元素都有按順序對應的正逆向下標索引,如果要獲取容器當中的某個元素,可以按照下標索引來獲取,
''' 正向下標索引: 0 1 2 3 4 '''
lstvar = [1, 2, 3, 4, 5]
''' 逆向下標索引: -5 -4 -3 -2 -1 '''
# 獲取第一個元素
res = lstvar[0]
# 逆向下標是Python特有,可以快速獲取容器中的最后一個元素
res = lstvar[-1]
# 沒有逆向下標怎么獲取最后一個資料元素
# 各語言獲取最后一個元素的通用寫法,獲取長度,然后減一,以為下標是從0開始的
res = len(lstvar) # 得到元素數量
res = lstvar[res - 1] # 下標從0開始,所以減1
print(res)
# 修改元素資料,list資料是可以修改的
lstvar = [1, 2, 3]
lstvar[-1] = 'msr'
print(lstvar[-1])
tuple 元組
特點
可獲取、不可修改、有序
定義元組
# 元組是使用逗號分隔開的一個個資料,一般情況下,都會使用小括號,但是小括號不是必須的
tupvar = (1,2,3,4,5)
print(tupvar, type(tupvar))
# 逗號是元組的識別符號,只要有逗號,即使只有一個元素,沒有括號都可以定義
# 使用這些方式定義后的資料型別都是元組型別的
tupvar = (1,)
tupvar = 1, 2
tupvar = 1,
# 定義一個空元組
# 單單一個括號就是一個元組型別的資料
tupvar = ()
tupvar1 = tuple()
print(tupvar, tupvar1)
print(type(tupvar), type(tupvar1))
獲取元組中的資料
# 元組也存在正逆向下標
tupvar = (1,2,3,4,5)
# 獲取元組的元素資料
res = tupvar[-1]
print(res)
# 元組的元素不可以更改
# tupvar[-1] = 'qwe' # error 不能修改
set 集合
特點
可獲取、不可修改、無序、自動去重
定義集合
# 集合是使用大括號包圍,使用逗號分隔資料的的一種資料形式
# 定義普通的集合
setvar = {1, 2, 3, 4, 5}
# 使用set函式定義集合
setvar = set()
# 定義一個空集合
# 注意:集合不可以直接使用大括號定義空集合,大括號定義的是字典
setvar, setvar1 = set(), {}
print(setvar, type(setvar), setvar1, type(setvar1))
作用
集合之間的交差互補
# 1、自動去重:集合會自動的將容器中的重復的資料自動洗掉
setvar = {1, 1, 1, 2, 2, 2, 3, 3, 3, 4}
print(setvar)
# 列印之后的資料
{1, 2, 3, 4}
# 2、集合是無序的:重復重繪會發現列印出來的元素順序是不確定的
setvar = {'1', '2', '3'}
print(setvar)
# 多次列印
{'1', '2', '3'}
{'1', '3', '2'}
{'3', '1', '2'}
# 自動去重之后的集合也是無序的,但是如果集合當中是純數字的話,是按照數字大小排序的
setvar = {1, 23, 4, 5, 6, 7, 8, }
print(setvar)
setvar = {True, False, True}
print(setvar)
setvar = {1, 23, 4, 5, True, 6.123412, 7, 8, False}
print(setvar)
獲取集合中的資料
# 因為集合無序,所以集合沒有下標索引,所以既不能獲取單個元素,也不能修改,
setvar = {'1', '2', '3', '1', '2', '3', '1', '2', '3'}
# 獲取集合當中的某一個元素
# res = setvar[-1] # error 錯誤
# 也不能修改,以為根本獲取不到要修改的那個資料
setvar[-1] = '1234' # error 錯誤
dict 字典
什么是字典
字典就是其他語言當中的自定義物件,
特點
利用鍵存盤資料、可獲取、可修改、表面有序、實際無序
定義字典
# 語法:{key1:value1, key2:value2, ...}
# 定義空字典
ditvar, ditvar2 = dict(), {}
# 定義一個普通的字典
ditvar = {'及時雨':'宋江', '玉麒麟':'盧俊義', '智多星':'吳用', 'Python小白':'小白白'}
print(ditvar, type(ditvar))
獲取和修改字典資料
# 字典使用鍵存盤資料,所以獲取字典中的元素要尋找它對應的鍵,修改也是如此,
ditvar = {'及時雨':'宋江', '玉麒麟':'盧俊義', '智多星':'吳用', 'Python小白':'小白白'}
# 獲取和修改字典中的元素
# 獲取資料
res = ditvar['智多星']
print(res)
# 修改資料(根據字典中已有的鍵修改)
ditvar['Python小白'] = '小黑'
print(ditvar)
# 在字典中添加鍵和值(其實也就是修改值)
ditvar[1] = 1 # 在字典中添加一個1的鍵,值是1
print(ditvar[1])
# 注意字典的鍵是唯一的,當字典中出現兩個相同的鍵時,鍵取后面的鍵所對應的值
# 字典的鍵是唯一的
dicvar = {1: 2, 1: 3}
print(dicvar)
字典的鍵和集合的值
資料型別的要求
# 集合的值和字典的鍵必須是可哈希的資料型別(不可變資料)
字典的鍵和集合的值對資料型別是有要求的,只能是Number、str、tuple的型別的資料,字典的值對資料型別沒有要求,只要是合法的python資料型別就可以
# 在實際的作業當中,我們對字典的要求更高,python中鍵的命名雖然滿足上述的幾個要求即可系統的執行,但是我一般會要求字典的鍵的命名和變數名的命名是一樣的要求,
"""
字典的鍵 和 集合中的值 資料型別的要求必須是如下幾種:
如下型別可以:
不可變資料(可哈希的資料型別) 有序
Number(int, float, bool, complex), str, tuple
不允許的型別:
可變資料(不可哈希的資料型別) 無序
list, set, dict
"""
但凡提到哈希演算法(hash),都是典型的無序特征
目的: 為了更加均勻的把資料分配到記憶體里,底層用的演算法類似于取模.
python3.6版本之后,字典做了優化,儲資料的時候用哈希演算法但是在拿出資料的時候,新按照定義字典時的順序進行重新排序所以看起來有序,際上無序,
容器型別總結
| 資料型別 | 是否可獲取 | 是否有序 | 是否可以修改其中元素 |
|---|---|---|---|
| str 字串 | 可獲取 | 有序 | 不可修改 |
| list 串列 | 可獲取 | 有序 | 可修改 |
| tuple 元組 | 可獲取 | 有序 | 不可修改 |
| set 集合 | 不可獲取 | 無序 | 可修改(不可手動修改,來回變化也是改變) |
| dict 字典 | 可獲取 | 看似有序、實際無序 | 可修改 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/250058.html
標籤:其他
上一篇:史上最全Java8日期時間工具類
下一篇:Go基礎及語法(一)
