Python 基礎資料型別的使用
阿新 • • 發佈:2018-12-21
Python 基礎資料型別
一. 基礎資料型別的使用
1.數字
int: num = 10 => 存放的是整型數字
float: num = 3.14 => 存放的是浮點型數字
bool: r = True => 存放的其實就是數字0(False) | 1(True)
三者均可以直接做數值的所有運算
型別的轉換
以 int("123") float(3) bool(1) 來定義變數
需求: 互動兩個變數的值
交叉賦值
a, b = b, a
# 按位進行一對一賦值
數字的使用
# int 整型
# float 浮點型
# bool 布林型別
# +驗證
a = 10
b = 20
print(a + b) # 輸出結果 30
c = 3.14
d = 1.86
print(c + d) # 輸出結果 5.0
e = True
f = False
res = e + f
print(res, type(res)) # 輸出結果 1 <class 'int'>
# 1 + 1 + 0 * 1
print(True + True + False * True) # 輸出結果 2
# 以型別方式定義變數
num = int(10)
print(num, id(num), type(num))
# 輸出結果 10 1375655104 <class 'int'>
# 將可以轉換為整型的其他型別數字,轉換為整型
# 資料型別的轉換
num = int(3.14)
print(num, id(num), type(num))
# 輸出結果 3 1375654992 <class 'int'>
# 將表示數值的字串轉換為數字型別
s = "88888"
num = int(s)
print(num, id(num), type(num))
# 輸出結果 88888 52621600 <class 'int'>
# 瞭解: Python以換行作為語句的結束標誌(斷句)
# 如果出現一行有多條語句,之間可以用;作為結束標誌
# 需求: 互動兩個變數的值
a = 10; b = 20
# 結果: a = 20 | b = 10
print(a, b) # 輸出結果 10 20
# 藉助第三者
# temp = a
# a = b
# b = temp
print(a, b) # 輸出結果 10 20
# 利用計算的演算法
# res = a + b
# a = res - a
# b = res - b
print(a, b) # 輸出結果 10 20
# 利用交叉賦值
a, b = b, a
print(a, b) # 輸出結果 20 10
2.字串
"I am a \"good boy\""
r"I am a \"good boy\""
b"\xe5\x91\xb5"
+ | * | [] | [:] | in | not in
%d %f %x %s
upper() | lower() | capitalize() | split() | join()
good good study day day up => Good Good Study Day Day Up
表示方式
字串三種表示方式
'' "" """"""
多種引號之間可以形成巢狀,出現同類型引號時,可以採用轉義字元處理
' "" ' | """ "" """ | " \" \" " | " '' "
原字串: 保留所有合法的字元,原樣輸出
r""
編碼字串: 以二進位制形式存在,用十六進位制展示給使用者看
b""
encode("編碼的字串名") decode("解碼的字串名") 編碼與解碼應該統一 utf-8 |gbk
拼接: +
重複: *
取字元: [index]
切片: [0:-3] 從第0位(開始)擷取到倒數第3位之間
判斷: in: 某指定字元或字串是否在目標字串中出現了 | not in: in的對立面
# "ac" in "abc" => False
全大寫: upper()
全小寫: lower()
首字母大寫: capitalize()
拆分: split() eg: s1.split("@") => 將s1字串按@符號進行拆分
合併: join() eg: "&".join(s_list) => 用&將s_list集合中的所有元素挨個拼接起來
字串的使用
# 可以用'' | "" | """""" 來表示字串
s1 = "你有100w人民幣"
print(s1) # 輸出結果 你有100w人民幣
# 需求: 你有"100w"人民幣
# ① 利用引號巢狀的方式
#s2 = '你有"100w"人民幣'
s2 = """你有"100w"人民幣"""
print(s2) # 輸出結果 你有"100w"人民幣
# ② 利用轉義字元
# \n => 換行符
s3 = "你有\"100w\"人民幣"
print(s3) # 輸出結果 你有"100w"人民幣
# 另外兩種常見的字串表示方式
# r"": 原始字串
# 字串中所有合法字串都以原型顯示
s4 = r"你有\"100w\"人民幣"
print(s4) # 輸出結果 你有\"100w\"人民幣
# b"": 編碼字串
# 編碼解碼 md5 utf-8 | gbk
# 進位制: 二進位制 十進位制 十六進位制
# s5 為普通字串
s5 = "呵呵"
print(s5) # 輸出結果 呵呵
s5 = s5.encode("utf-8") # 普通字串可以進行編碼操作
print(s5) # 輸出結果 b'\xe5\x91\xb5\xe5\x91\xb5'
# s5 為編碼字串
s5 = s5.decode("utf-8") # 普通字串可以進行解碼操作
print(s5) # 輸出結果 呵呵
# 1011 => 8421 => 8 + 2 + 1 =>b
# ba => 10111010
s6 = b'\xe5\x91\xb5'
s6 = s6.decode('utf-8')
print(s6) # 輸出結果 呵
# + | * | [] | [:] | in | not in
# 字串拼接
a = "hello"
b = "world "
# hello world
res = a + " " + b # 拼接得到的是新字串 ,原字串資料會保留
print(res) # 輸出結果 hello world
print(a) # 輸出結果 hello
name = "Bob"
tag = 1
name = name + str(tag)
print(name) # 輸出結果 Bob1
# 字串重複
print("*" * 30) # 輸出結果 ******************************
# 取指定索引對應的字元 []
s7 = "今天天氣不好! Ai...."
print(s7[0]) # 輸出結果 今
print(s7[8]) # 輸出結果 A
print(s7[-1]) # 輸出結果 .
print(s7[-6]) # 輸出結果 A
# [:] 切片: 遵循半閉半開規則 [n, m) 從n取到m n <= res < m
print(s7[8:]) # 從索引8開始,擷取到最後 輸出結果 Ai....
print(s7[:-6]) # 在開始擷取到倒數第6位之前 輸出結果 今天天氣不好!
print(s7[4:6]) # 擷取索引4,5號位字元 輸出結果 不好
# 字元存在與否的判斷
print("a" not in s7) # 輸出結果 True
print("A" in s7) # 輸出結果 True
# upper() | lower() | capitalize() | split() | join()
# 全大寫
print("abc".upper()) # 輸出結果 ABC
# 全小寫
print("XyZ".lower()) # 輸出結果 xyz
# 首字母大寫
print("hello world".capitalize()) # 輸出結果 Hello world
# 拆分
data = "name='Eira'@[email protected]='男'"
res = data.split("@")
print(res) # 輸出結果 ["name='Eira'", 'age=8', "gender='男'"]
# 拼接
# & => name='Eira'&age=8&gender='男'
result = "&".join(res)
print(result) # 輸出結果 name='Eira'&age=8&gender='男'
# 需求: good good study day day up => Good Good Study Day Day Up
source = 'good good study day day up'
# 第一步: 拆分
s_list = source.split(r' ')
# print(s_list)
# 第二步: 首字母大寫
# 解壓賦值
a, b, c, d, e, f = s_list
print(a, b, f) # 輸出結果 good good up
# a = str(a).capitalize()
a = a.capitalize()
print(a) # 輸出結果 Good
b = b.capitalize()
c = c.capitalize()
d = d.capitalize()
e = e.capitalize()
f = f.capitalize()
# 第三步: 合併
result = r" ".join([a, b, c, d, e, f])
print(result) # 輸出結果 Good Good Study Day Day Up
3.列表
[1, 3, 1, 2, 2, 1, 5]
[1, 3.14, "嘿嘿", True]
[[1, 2, 3], ('a', 'b', 'c'), {"name": "宙斯"}]
+ | * | [] | [:] | in | not in
append(o) | insert(i, o) | remove(o) | pop(i) | clear()
sort(reverse=True)
空列表: []
可以包含重複元素(集合中出現的成員就叫做元素): [1, 2, 1]
可以出現不同型別: [1, 3.14 True]
巢狀: [1, [2, [3]], {}]
取值: [index] index從0開頭到結尾,或-1從結尾到開頭
切片: [b_index:e_index]
判斷: in | not in 判斷元素是否在列表中
增: append("1") | insert(1, "0")
刪: remove("1") | pop(1) | clear()
改: list[0] = 12345
查: list[0]
排序: 一個存放同類型,具有可比性的資料的列表
正序: list.sort()
倒序: list.sort(reverse=True)
列表操作
ls1 =[]
print(ls1, type(ls1)) # 輸出結果 [] <class 'list'>
# 列表中可以出現重複資料
ls2 = [1, 3, 2, 1, 2, 1]
print(ls2) # 輸出結果 [1, 3, 2, 1, 2, 1]
# 列表中可以出現不同型別的資料
ls3 = [1, 3.14, True, (), {}]
print(ls3) # 輸出結果 [1, 3.14, True, (), {}]
# 列表通過索引取值(索引從0開始), 取值符號為[]
# res = ls3[4]
res = ls3[-1]
print(res, type(res)) # => {}代表空字典 輸出結果 {} <class 'dict'>
# ()代表空元組,但只包含一個元素的元組的表示方式(元素,)
x = (1,)
print(x, type(x)) # 輸出結果 (1,) <class 'tuple'>
# 切片
res = ls3[1:3]
print(res) # 輸出結果 [3.14, True]
# 判斷
print("3.14" in ls3) # 輸出結果 False
print(3.14 in ls3) # 輸出結果 True
# 巢狀
ls4 = [1, [2, [3]], {}]
# 需求: 訪問數值2, 3
print(ls4[1][0]) # 輸出結果 2
print(ls4[1][1][0]) # 輸出結果 3
# 列表的增刪改查
# append(o) | insert(i, o) | remove(o) | pop(i) | clear()
ls5 = [1, 2]
print(ls5) # 輸出結果 [1, 2]
# 查
print(ls5[1]) # 輸出結果 2
# 改
ls5[1] = "2"
print(ls5) # 輸出結果 [1, '2']
# 增
# 增加到末尾
ls5.append(3)
print(ls5) # 輸出結果 [1, '2', 3]
# 增加到指定位
ls5.insert(1, True) # 將元素插入到列表的第1位
print(ls5) # 輸出結果 [1, True, '2', 3]
# 將指定元素刪除
ls5.remove("2") # 引數為True,刪除了列表的首位
print(ls5) # 輸出結果 [1, True, 3]
# 通過索引刪除
ls5.pop(1)
print(ls5) # 輸出結果 [1, 3]
# 清空
ls5.clear()
print(ls5) # 輸出結果 []
# 排序: 集合中存放的是可以排序的同一型別資料
ls6 = [3, 1, 4, 2, 5]
print(ls6) # 輸出結果 [3, 1, 4, 2, 5]
ls6.sort() # 排序操作的是列表本身,列表會發生變換,所以排序不需要返回值
print(ls6) # 輸出結果 [1, 2, 3, 4, 5]
# 設定是否逆向排序
ls6.sort(reverse=True)
print(ls6) # 輸出結果 [5, 4, 3, 2, 1]
4.字典
空字典: {}
key的型別: str | int | float | bool | tuple 這些不可變型別
value的型別: 所有Python支援的型別
增刪改查
dic[key]
增: 原dic中沒有出現該key,就是增 dic[key] = value
刪: 刪除已有的key及對應的值 del dic[key]
改: 對已有的key重新賦值 dic[key] = new_value
查: 取已有key的值 dic[key]
# 空字典
dic = {}
print(dic, type(dic)) # 輸出結果 {} <class 'dict'>
# 定義字典: key-value形式鍵值對
dic = {"name": "Eira"}
print(dic) # 輸出結果 {'name': 'Eira'}
# key可以為哪些型別: 不可變型別 str | int | float | tuple | bool, 常用 str
# value可以為哪些型別: 所有型別
dic = {1: 1, 3.14: "1", True: {}, (): [], "a": [{1:1}]}
print(dic) # 輸出結果 {1: {}, 3.14: '1', (): [], 'a': [{1: 1}]}
# 增刪改查
dic = {"name": "Eira"}
print(dic) # 輸出結果 {'name': 'Eira'}
# 增
dic["age"] = 88
print(dic) # 輸出結果 {'name': 'Eira', 'age': 88}
# 刪
del dic["name"]
print(dic) # 輸出結果 {'age': 88}
# 改
dic["age"] = 90
print(dic) # 輸出結果 {'age': 90}
# 查
print(dic["age"]) # 輸出結果 90