動態

詳情 返回 返回

人工智能之編程基礎 Python 入門:第五章 基本數據類型(一) - 動態 詳情

人工智能之編程基礎 Python 入門

第五章 基礎數據類型(一)


前言

本章節講述python的基礎數據類型,python的基礎數據類型主要包括以下

  • ​不可變數據(3 個):​Number(數字)、String(字符串)、Tuple(元組);
  • ​可變數據(3 個):​List(列表)、Dictionary(字典)、Set(集合)。

Number(數字)

number(數字)類型用於表示數值數據。Python 提供了多種內置的數字類型,主要包括:

1. 整數 (int)

int 類型用於表示整數,可以是正數、負數或零。Python 3 的 int 類型沒有大小限制(僅受限於可用內存),因此可以處理非常大的整數。

特點:

  • 無大小限制
  • 可以用十進制、二進制、八進制或十六進制表示

示例:

# 十進制
x = 42
y = -17
z = 0

# 二進制 (以 0b 或 0B 開頭)
binary_num = 0b1010  # 等於十進制的 10

# 八進制 (以 0o 或 0O 開頭)
octal_num = 0o17     # 等於十進制的 15

# 十六進制 (以 0x 或 0X 開頭)
hex_num = 0xFF       # 等於十進制的 255

# 大整數
big_num = 123456789012345678901234567890
print(type(big_num))  # <class 'int'>

2. 浮點數 (float)

float 類型用於表示帶有小數點的數字(實數)。它們遵循 IEEE 754 雙精度浮點數標準,通常有大約 17 位有效數字。

特點:

  • 有精度限制
  • 可能存在浮點數精度問題
  • 可以用科學計數法表示

示例:

# 普通浮點數
pi = 3.14159
temperature = -12.5
price = 9.99

# 科學計數法
scientific = 1.5e-3    # 等於 0.0015
large_float = 2.5e8    # 等於 250000000.0

# 浮點數精度問題示例
print(0.1 + 0.2)       # 輸出: 0.30000000000000004
print(0.1 + 0.2 == 0.3) # 輸出: False

# 使用 decimal 模塊解決精度問題
from decimal import Decimal
print(Decimal('0.1') + Decimal('0.2') == Decimal('0.3'))  # True

3. 複數 (complex)

complex 類型用於表示複數,形式為 a + bj,其中 a 是實部,b 是虛部,j 表示虛數單位(√-1)。

特點:

  • 實部和虛部都是浮點數
  • 可以通過 .real.imag 屬性訪問實部和虛部

示例:

# 複數
z1 = 3 + 4j
z2 = -2.5 + 1.7j
z3 = 5j           # 只有虛部
z4 = 3.0 + 0j     # 只有實部

# 訪問實部和虛部
print(z1.real)    # 3.0
print(z1.imag)    # 4.0

# 複數運算
z_sum = z1 + z2
print(z_sum)      # (0.5+5.7j)

# 獲取模長
import cmath
print(abs(z1))    # 5.0
print(cmath.phase(z1))  # 獲取相位

4. 布爾值 (bool)

雖然 bool 類型通常被視為邏輯類型,但在 Python 中它是 int 的子類。TrueFalse 分別等價於整數 1 和 0。

示例:

# 布爾值
is_active = True
is_done = False

# 布爾值是 int 的子類
print(isinstance(True, int))  # True
print(True + 1)              # 2
print(False * 10)            # 0

# 在條件語句中的使用
if True:
    print("這總是會執行")

if 1:
    print("非零數值被視為 True")

5. 數字類型的轉換

Python 提供了內置函數在不同數字類型之間進行轉換。

轉換函數:

# int() - 轉換為整數
print(int(3.7))      # 3 (向零取整)
print(int("42"))     # 42
print(int(True))     # 1

# float() - 轉換為浮點數
print(float(42))     # 42.0
print(float("3.14")) # 3.14
print(float(True))   # 1.0

# complex() - 轉換為複數
print(complex(3, 4)) # (3+4j)
print(complex("2+3j")) # (2+3j)

6. 數字類型的檢查和操作

# 檢查類型
x = 42
y = 3.14
z = 2 + 3j

print(type(x))  # <class 'int'>
print(type(y))  # <class 'float'>
print(type(z))  # <class 'complex'>

# isinstance() 檢查
print(isinstance(x, int))      # True
print(isinstance(y, float))    # True
print(isinstance(z, complex))  # True

# 常用數學運算
a, b = 10, 3
print(a + b)   # 13
print(a - b)   # 7
print(a * b)   # 30
print(a / b)   # 3.333... (結果總是 float)
print(a // b)  # 3 (整除)
print(a % b)   # 1 (取餘)
print(a ** b)  # 1000 (冪運算)

7. 內置數學函數

Python 提供了許多內置的數學函數:

# 基本數學函數
print(abs(-5))        # 5
print(round(3.14159, 2))  # 3.14
print(pow(2, 3))      # 8
print(max(1, 5, 3))   # 5
print(min(1, 5, 3))   # 1

# 需要導入 math 模塊
import math

print(math.pi)        # 3.141592653589793
print(math.e)         # 2.718281828459045
print(math.sqrt(16))  # 4.0
print(math.floor(3.7)) # 3
print(math.ceil(3.2))  # 4
print(math.log(10))    # 自然對數
print(math.log10(100)) # 以10為底的對數

String(字符串)

字符串(String) 在python中是一種用於表示文本數據的基本數據類型。字符串是由一系列字符組成的不可變序列。


1. 字符串的創建

Python 中有多種方式創建字符串:

# 使用單引號
s1 = 'Hello World'

# 使用雙引號
s2 = "Hello World"

# 使用三重引號(可以跨行)
s3 = """這是一個
多行字符串"""

s4 = '''也可以
這樣寫'''

# 空字符串
empty_str = ""

注意​:單引號和雙引號功能相同,選擇一種風格並保持一致。三重引號常用於文檔字符串(docstring)或多行文本。


2. 字符串的特性

  • 不可變性(Immutable)​:字符串一旦創建就不能被修改。任何“修改”操作實際上都會創建一個新的字符串對象。
  • 有序性(Ordered)​:字符串中的字符有固定的順序,可以通過索引訪問。
  • 可迭代(Iterable)​:可以使用 for 循環遍歷字符串中的每個字符。

3. 字符串索引與切片

索引(Indexing)

text = "Python"
print(text[0])    # P (第一個字符)
print(text[-1])   # n (最後一個字符)
print(text[5])    # n

切片(Slicing)

語法:string[start:end:step]

text = "Hello World"

# 基本切片
print(text[0:5])      # Hello (索引0到4)
print(text[6:])       # World (從索引6到末尾)
print(text[:5])       # Hello (從開頭到索引4)

# 步長
print(text[::2])      # HloWrd (每隔一個字符)
print(text[::-1])     # dlroW olleH (反轉字符串)

# 負索引切片
print(text[-5:])      # World

4. 字符串的常用操作

拼接(Concatenation)

# 使用 + 操作符
greeting = "Hello" + " " + "World"

# 使用 join() 方法(推薦,效率更高)
words = ["Hello", "Beautiful", "World"]
sentence = " ".join(words)  # "Hello Beautiful World"

重複

repeat = "Ha" * 3  # "HaHaHa"

長度

length = len("Python")  # 6

5. 常用字符串方法

Python 提供了豐富的內置方法來操作字符串:

text = "  Hello World  "

# 大小寫轉換
print(text.upper())           # "  HELLO WORLD  "
print(text.lower())           # "  hello world  "
print(text.capitalize())      # "  hello world  " -> "  hello world  " (首字母大寫)
print(text.title())           # "  Hello World  "

# 去除空白
print(text.strip())           # "Hello World"
print(text.lstrip())          # "Hello World  " (左)
print(text.rstrip())          # "  Hello World" (右)

# 查找與替換
print(text.find("World"))     # 8 (找到的索引,未找到返回-1)
print(text.replace("World", "Python"))  # "  Hello Python  "

# 判斷方法
print("Hello".isalpha())      # True (是否全是字母)
print("123".isdigit())        # True (是否全是數字)
print("hello".startswith("he")) # True
print("world".endswith("ld"))   # True

# 分割與合併
sentence = "apple,banana,orange"
fruits = sentence.split(",")  # ['apple', 'banana', 'orange']

joined = "-".join(["a", "b", "c"])  # "a-b-c"

6. 字符串格式化

1. f-string(推薦,Python 3.6+)

name = "Alice"
age = 25
message = f"我的名字是 {name},今年 {age} 歲。"
print(message)  # 我的名字是 Alice,今年 25 歲。

2. .format() 方法

message = "我的名字是 {},今年 {} 歲。".format(name, age)
message = "我的名字是 {n},今年 {a} 歲。".format(n=name, a=age)

3. % 格式化(較老的方式)

message = "我的名字是 %s,今年 %d 歲。" % (name, age)

7. 轉義字符

使用反斜槓 \ 來表示特殊字符:

轉義字符 含義
\\ 反斜槓
\' 單引號
\" 雙引號
\n 換行
\t 製表符
\r 回車
print("Hello\nWorld")   # 換行
print("He said: \"Hello\"")  # He said: "Hello"
print("C:\\Users\\Name")     # 路徑

原始字符串(Raw String)​:在字符串前加 r,忽略轉義字符。

path = r"C:\Users\Name\Documents"  # 不需要雙寫反斜槓

8. 字符串的不可變性示例

text = "Hello"
# text[0] = "h"  # ❌ 錯誤!字符串不可變

# 正確的做法是創建新字符串
new_text = "h" + text[1:]  # "hello"

9. 實用技巧

遍歷字符串

for char in "Python":
    print(char)

檢查子字符串

if "hello" in "hello world":
    print("找到了!")

統計字符

text = "hello"
print(text.count("l"))  # 2

Tuple(元組)

在 Python 中,元組(Tuple) 是一種有序、不可變的序列數據類型。它與列表(List)非常相似,但最大的區別在於​一旦創建,元組的內容不能被修改​。


1. 元組的創建

元組可以通過以下幾種方式創建:

# 使用圓括號 ()
t1 = (1, 2, 3, 4, 5)
t2 = ("apple", "banana", "cherry")
t3 = (1, "hello", 3.14, True)

# 單個元素的元組需要加逗號
single = (42,)  # 注意逗號,否則會被當作普通括號
print(type(single))  # <class 'tuple'>

# 省略括號(但不推薦,可讀性差)
t4 = 1, 2, 3
print(type(t4))  # <class 'tuple'>

# 空元組
empty_tuple = ()

# 使用 tuple() 構造函數
t5 = tuple([1, 2, 3])      # 從列表創建
t6 = tuple("hello")        # 從字符串創建 -> ('h', 'e', 'l', 'l', 'o')

2. 元組的特性

特性 説明
有序(Ordered) 元素有固定的順序,可以通過索引訪問
不可變(Immutable) 一旦創建,不能添加、刪除或修改元素
可重複(Allow Duplicates) 可以包含重複的元素
可哈希(Hashable) 如果元組中的所有元素都是不可變的,那麼元組本身是可哈希的,可以用作字典的鍵或集合的元素

3. 元組的訪問

索引(Indexing)

t = (10, 20, 30, 40, 50)
print(t[0])    # 10
print(t[-1])   # 50 (最後一個)

切片(Slicing)

print(t[1:4])    # (20, 30, 40)
print(t[::2])    # (10, 30, 50)
print(t[::-1])   # (50, 40, 30, 20, 10) 反轉

4. 元組的操作

拼接(Concatenation)

t1 = (1, 2)
t2 = (3, 4)
t3 = t1 + t2  # (1, 2, 3, 4)

重複

t = (1, 2) * 3  # (1, 2, 1, 2, 1, 2)

成員檢查

if 2 in t:
    print("2 在元組中")

長度

length = len(t)  # 獲取元組長度

5. 元組的常用方法

由於元組不可變,它的方法很少:

t = (1, 2, 3, 2, 4, 2)

# count() - 統計某個元素出現的次數
print(t.count(2))  # 3

# index() - 查找元素第一次出現的索引
print(t.index(3))  # 2
# print(t.index(99))  # ValueError: tuple.index(x): x not in tuple

6. 元組的解包(Unpacking)

元組解包是 Python 中非常強大和常用的功能。

# 基本解包
coordinates = (3, 4)
x, y = coordinates
print(x, y)  # 3 4

# 函數返回多個值
def get_name_age():
    return "Alice", 25

name, age = get_name_age()

# 忽略某些值
data = (1, 2, 3, 4, 5)
a, b, *rest = data  # a=1, b=2, rest=[3,4,5]
print(rest)  # [3, 4, 5]

# 只取首尾
first, *middle, last = (1, 2, 3, 4, 5)
print(first, middle, last)  # 1 [2, 3, 4] 5

7. 元組的應用場景

  1. 作為字典的鍵
# ✅ 元組可以作為字典的鍵
locations = {
    (0, 0): "原點",
    (3, 4): "點A",
    (-1, 2): "點B"
}
  1. 函數返回多個值
def min_max(numbers):
    return min(numbers), max(numbers)

minimum, maximum = min_max([1, 2, 3, 4, 5])
  1. 數據保護
# 防止意外修改
days_of_week = ("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday")
# days_of_week[0] = "Mon"  # ❌ 會報錯,保護數據
  1. 格式化字符串
print("座標: %d, %d" % (3, 4))

8. 注意事項

  • 不可變性是淺層的​:如果元組包含可變對象(如列表),那麼該對象的內容仍然可以被修改。
t = (1, [2, 3], 4)
t[1].append(5)  # ✅ 允許,因為修改的是列表
print(t)        # (1, [2, 3, 5], 4)

# t[1] = [2, 3, 4]  # ❌ 不允許,因為要替換元組元素

總結

本文主要對python的基本數據類型中的不可變數據類型進行相關的學習,下章節針對可變數據類型繼續相關的學習。希望大家一起努力學習,掌握基礎才能更深的靈活運用後期的人工智能的實踐工作。

資料關注

相關資料獲取:
公眾號:咚咚王

藝術二維碼.png

《Python編程:從入門到實踐》
《利用Python進行數據分析》
《算法導論中文第三版》
《概率論與數理統計(第四版) (盛驟) 》
《程序員的數學》
《線性代數應該這樣學第3版》
《微積分和數學分析引論》
《(西瓜書)周志華-機器學習》
《TensorFlow機器學習實戰指南》
《Sklearn與TensorFlow機器學習實用指南》
《模式識別(第四版)》
《深度學習 deep learning》伊恩·古德費洛著 花書
《Python深度學習第二版(中文版)【純文本】 (登封大數據 (Francois Choliet)) (Z-Library)》
《深入淺出神經網絡與深度學習+(邁克爾·尼爾森(Michael+Nielsen) 》
《自然語言處理綜論 第2版》
《Natural-Language-Processing-with-PyTorch》
《計算機視覺-算法與應用(中文版)》
《Learning OpenCV 4》
《AIGC:智能創作時代》杜雨+&+張孜銘
《AIGC原理與實踐:零基礎學大語言模型、擴散模型和多模態模型》
《從零構建大語言模型(中文版)》
《實戰AI大模型》
《AI 3.0》

user avatar u_17037082 頭像 u_16776161 頭像 u_13137233 頭像 u_16640205 頭像 xinggandemuer_b5u1v2 頭像 histry 頭像 mianlengxincidehongjiu 頭像 huizhudev 頭像 bizseerbishikeji 頭像 yeshan333 頭像 junyidedalianmao 頭像 nixideshatanku 頭像
點贊 39 用戶, 點贊了這篇動態!
點贊

Add a new 評論

Some HTML is okay.