python基礎01—基礎數據類型
阿新 • • 發佈:2019-01-23
[1] 換行 統計 設計 ascii world 並集 格式 amp
數據類型
單位換算
- 最小的單位為bit,表示一個二進制的0或1,一般使用小寫的b表示
- 存儲的最小單位為字節(Byte),1B = 8b
- 1024B = 1KB
- 1024KB = 1MB
- 1024MB = 1GB
- 1024GB = 1TB
- 1024TB = 1PB
- 2^32 = 2^10 * 2^10 * 2^10 * 2^2 = 4GB
進制轉換
- 十進制
- 基數為0~9,逢10進1
- 實例:123 = 1 * 10^2 + 2 * 10^1 + 3 * 10^0 = 100 + 20 + 3 = 123
- 二進制
- 基數0和1,逢2進1,python中以‘0b‘開頭
- 示例:0b110100 = 2^5 + 2^4 + 2^2 = 32 + 16 + 4 = 52
- 十進制轉二進制:除2取余,倒序書寫
- 22 = 0b10110
- 八進制
- 基數0~7,逢8進1,python中以‘0o‘開頭
- 示例:0o123 = 1 * 8^2 + 2 * 8^1 + 3 * 8^0 = 64 + 16 + 3 = 83
- 八進制轉二進制:八進制1位表示3位二進制
- 0o123 = 0b 001 010 011
- 十六進制
- 基數09、AF,逢16進1,python中以‘0x‘開頭
- 示例:0xAB = 10 * 16^1 + 11 * 16^0 = 160 + 11 = 171
- 十六進制轉二進制:十六進制1位表示4位二進制
- 0xABC = 0b 1010 1011 1100
- 計算機中的數據是以哪種進制存儲的?為什麽?
- 二進制,因為計算機只識別二進制,具體原因如下:
- 穩定性高(只有0和1),成本低(技術上容易實現),與生活中的真假邏輯相吻合
- 計算機中的數據是如何存儲的?
- 如何存儲負數?
- 最高位作為符號位,0表示正數,1表示負數
- 雖然犧牲了最不常用的最高位,但是解決了負數問題,並且簡化了硬件設計(節約成本)
- 原碼、反碼、補碼?
- 正數的三碼一致,只有負數才有反碼和補碼
- 反碼等於原碼的符號位不變,其余位取翻
- 補碼等於對於的反碼加1
- 計算機中的數據都是以補碼的形式存在
- 如何存儲負數?
數據類型
-
數據類型是為了處理不同的運算而存在,
-
python中的數據類型有:整型、浮點、字符串、列表、元組、字典、集合、空
-
整型(int):就是數學中的整數
-
浮點(float):就是數學中的小數
# 小數(浮點數) b = 3.14 print(type(b)) # 科學計數法 c = 3.14e-3 print(c)
-
布爾(bool):與生活中的真假邏輯相對應
# bool類型,只有兩個值,True和False d = False print(type(d))
-
空(NoneType):是一個特殊的類型,只有一個值(None)
-
字符串(str):用引號括起來的一串字符
- 單引號或雙引號都可以,也可以使用三個單引號或雙引號
- 單引號中的單引號及雙引號中的雙引號都需要轉義
- 轉義字符:換行(\n)、制表(\t)等
- 有時‘‘也需要轉義
- 一行顯示不完時,換行處理
g = ‘hello‘ ‘ world‘ print(g) h = ‘hello world‘ print(h) i = ‘‘‘ abc def 123 ‘‘‘ print(i)
- 統計字符個數
# 無論什麽字符,都是一個長度 s = ‘hello你好‘ print(len(s))
- 字符串拼接
# 直接拼接 s2 = ‘hello‘ + ‘world‘ print(s2) # 指定的字符串重復若幹次,然後拼接一起 s3 = ‘abc‘ * 3 print(s3)
- 提取單個字符
s4 = ‘123456‘ # 從開頭提取,下表從0開始 print(s4[0]) # 從末尾提取,下表從-1開始 print(s4[-2])
- 字符串切片(提取一段)
s5 = ‘abcdefg‘ # s[起始下表:結束下表],包括起始下表元素,不包括結束下表元素 print(s5[0:3]) # 從開頭提取到指定位置 print(s5[:4]) # 從指定下表提取到結尾 print(s5[3:]) # 下表為1開始,提取到倒數第二個,不包括倒數第二個 print(s5[1:-2]) # 提取最後4個字符 print(s5[-4:]) # 提取全部 print(s5[:]) # 指定步進值,默認為1 print(s5[::2]) # 字符串逆序 print(s5[::-1])
- 格式化
name = ‘goudan‘ like = ‘wangdahua‘ age = 18 print(‘我叫%s,暗戀%s,她今年%d歲了‘ % (name, like, age)) # 字符 => ASCII print(ord(‘a‘)) # ASCII => 字符 print(chr(65)) print(‘我叫{},喜歡{},今年{}歲了‘.format(name, like, age)) print(‘我叫{2},喜歡{1},今年{0}歲了‘.format(name, like, age)) print(‘我叫{nm},喜歡{lk},今年{a}歲了‘.format(nm=name, lk=like, a=age))
%s:給字符串占位的
%d:給整型數據占位
%f:給浮點數占位
%c:給字符占位
? ASCII:
? 09:4857
? AZ:6590
? az:97122
-
列表(list):通過[]定義,裏面可以存放任意類型的數據
- 取值:lt[0]、lt[-1]
- 列表是可以修改的,lt[1] = ‘小敏‘
- 存在越界問題
- 也可以進行 ‘+‘ 和 ‘*‘ 的運算
- 也可以進行切片操作
- lt[:] = [],表示清空列表
- lt[:2] = [],刪除前兩個元素
-
元組(tuple):通過()定義,其他操作與列表相同
- 元組不可修改
- 當只有一個元素時,元素後要添加一個逗號
-
集合(set):使用{}定義,
- 空的集合不能使用大括號定義(留給字典用的),使用set()定義
- 集合是不可修改
- 集合中的元素時無序的
- 集合中的元素不能重復
- 簡單使用
s = {‘李白‘, ‘杜甫‘, ‘白居易‘, ‘蘇軾‘, ‘陶淵明‘, ‘李白‘} s2 = {‘李白‘, ‘李商隱‘, ‘杜牧‘, ‘蘇軾‘} print(type(s)) print(s) # 交集 print(s & s2) # 並集 print(s | s2) # 差集 print(s - s2) print(s2 - s) # 空的集合這樣定義,不能使用{} s3 = set() print(type(s3))
-
字典(dict):通過{}定義
- 元素是由鍵值對組成的
- 鍵和值之間使用‘:‘連接
- 字典中的鍵是唯一的,值可以是任意的
- 字典是可變的
- 簡單使用:
d = {‘name‘: ‘xiaoming‘, ‘age‘: 18} print(d) print(type(d)) # 根據鍵提取對應的值 print(d[‘name‘]) # 鍵不存在時會報錯 # print(d[‘abc‘]) # 鍵存在返回對應的值,鍵不存在返回None,也可以自定義默認值 print(d.get(‘abc‘, ‘默認值‘)) # 沒有則添加鍵值對 # d[‘hello‘] = ‘world‘ # 已存在則修改 d[‘name‘] = ‘xiaofang‘ # 刪除元素 # del d[‘name‘] # print(d) # len返回的是鍵值對的個數 print(len(d))
-
強制類型轉換
int() # 轉化為整型 float() # 轉換為浮點數 str() # 轉換字符串 list() # 轉換為列表 tuple() # 轉換為元組 set() # 轉換為集合 dict() # 轉換為字典 l = [(‘name‘, ‘xiaoming‘), (‘age‘, 18)] # 將列表轉化為字典 d1 = dict(l) print(d1)
列表的去重,列表 => 集合 => 列表
-
獲取變量地址
a = 10 print(id(a))
python基礎01—基礎數據類型