1. 程式人生 > >Python 基礎資料型別的使用

Python 基礎資料型別的使用

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