Python 基礎詳解:數據類型(Data Types)—— 程序的“數據基石”

一、引言:為什么數據類型如此重要?

在 Python 編程中,數據類型決定了:

  • 數據的存儲方式
  • 可以對數據執行的操作
  • 數據的取值范圍
  • 不同類型之間的運算規則

理解數據類型是編寫正確、高效程序的基礎。Python 是動態類型語言,雖然你不需要顯式聲明類型,但必須清楚每個變量的類型及其行為。


二、Python 內置核心數據類型概覽

Python 提供了豐富的內置數據類型,主要分為以下幾類:

類別

數據類型

說明

數字類型

int, float, complex

數值計算

文本類型

str

字符串處理

布爾類型

bool

邏輯判斷

序列類型

list, tuple, range

有序數據集合

映射類型

dict

鍵值對存儲

集合類型

set, frozenset

無序唯一元素集合

二進制類型

bytes,bytearray,memoryview

二進制數據處理

💡 本文將重點講解最常用的核心類型。


三、數字類型(Numeric Types)

1. 整數(int)

表示整數值,沒有大小限制(僅受內存限制)。

age = 25
temperature = -10
big_number = 123456789012345678901234567890
常用操作:
a = 10
b = 3print(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  冪運算

?? 注意:/ 運算符總是返回浮點數,即使結果是整數(如 4 / 2 返回 2.0)。


2. 浮點數(float)

表示帶小數點的數字,遵循 IEEE 754 標準。

price = 19.99
pi = 3.1415926535
scientific = 1.5e-4  # 科學計數法,等于 0.00015
浮點數精度問題:
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)(了解即可)

用于數學和工程計算,形式為 a + bj

z = 3 + 4j
print(z.real)  # 3.0
print(z.imag)  # 4.0

四、文本類型:字符串(str)

字符串是字符的序列,用單引號、雙引號或三引號包圍。

name = "Alice"
message = 'Hello, World!'
multi_line = """這是一個
多行字符串"""

字符串的常用操作

1. 字符串拼接
first = "Hello"
last = "World"
full = first + " " + last  # "Hello World"

? 推薦使用 f-string(Python 3.6+):

name = "Alice"
age = 25
print(f"我是{name},今年{age}歲。")
2. 字符串索引與切片
text = "Python"print(text[0])    # 'P'  第一個字符
print(text[-1])   # 'n'  最后一個字符
print(text[1:4])  # 'yth'  切片 [start:end)
print(text[:3])   # 'Pyt'  從開頭到索引3(不含)
print(text[3:])   # 'hon'  從索引3到結尾
3. 常用字符串方法

方法

說明

示例

.upper()

轉大寫

"hello".upper()

"HELLO"

.lower()

轉小寫

"HELLO".lower()

"hello"

.strip()

去除首尾空白

" abc ".strip()

"abc"

.replace(old, new)

替換

"abc".replace("a", "x")

"xbc"

.split(sep)

分割

"a,b,c".split(",")

['a', 'b', 'c']

.join(list)

連接

"-".join(['a','b','c'])

"a-b-c"

.find(sub)

查找位置

"abc".find("b")

1

.startswith()

是否以某字符串開頭

"abc".startswith("a")

True

email = "  Alice@EXAMPLE.COM  "
clean_email = email.strip().lower()
print(clean_email)  # "alice@example.com"

五、布爾類型(bool)

布爾值只有兩個:TrueFalse,用于邏輯判斷。

is_student = True
has_permission = False

布爾值的來源:

  • 比較運算的結果
  • 條件判斷的結果
  • 任何對象都可以被“真值測試”
print(5 > 3)           # True
print(10 == 10)        # True
print("hello" != "")   # True# 真值測試(Truthiness)
print(bool(1))         # True
print(bool(0))         # False
print(bool("abc"))     # True
print(bool(""))        # False
print(bool([1, 2]))    # True
print(bool([]))        # False

? 規則:空值(0, "", [], {}, None)為 False,其他為 True


六、序列類型

1. 列表(list)—— 有序、可變

列表是最常用的數據結構,可以存儲不同類型的數據。

fruits = ["蘋果", "香蕉", "橙子"]
numbers = [1, 2, 3, 4, 5]
mixed = ["Alice", 25, True, 3.14]
列表的常用操作:
# 訪問元素
print(fruits[0])     # "蘋果"
print(fruits[-1])    # "橙子"# 修改元素
fruits[1] = "葡萄"# 添加元素
fruits.append("草莓")      # 末尾添加
fruits.insert(1, "芒果")   # 在索引1處插入# 刪除元素
fruits.remove("蘋果")      # 刪除指定值
del fruits[0]             # 刪除索引0的元素
popped = fruits.pop()     # 彈出并返回末尾元素# 列表長度
print(len(fruits))# 列表切片(同字符串)
print(numbers[1:4])  # [2, 3, 4]# 遍歷列表
for fruit in fruits:print(fruit)
列表推導式(List Comprehension)

一種簡潔創建列表的方式:

# 普通方式
squares = []
for x in range(1, 6):squares.append(x**2)# 推導式方式(推薦)
squares = [x**2 for x in range(1, 6)]
print(squares)  # [1, 4, 9, 16, 25]# 帶條件的推導式
evens = [x for x in range(10) if x % 2 == 0]

2. 元組(tuple)—— 有序、不可變

元組與列表相似,但創建后不能修改

coordinates = (10, 20)
person = ("張三", 25, "北京")
single_item = (42,)  # 單個元素的元組,必須加逗號
元組的特點:
  • 更安全:防止意外修改
  • 性能略高:占用內存更少
  • 可作為字典的鍵(列表不行)
# 訪問元素(同列表)
print(person[0])  # "張三"# 不可修改
# person[0] = "李四"  # TypeError!

3. range 對象

表示一個不可變的數字序列,常用于 for 循環。

r1 = range(5)        # 0, 1, 2, 3, 4
r2 = range(1, 6)     # 1, 2, 3, 4, 5
r3 = range(0, 10, 2) # 0, 2, 4, 6, 8 (步長為2)for i in range(3):print(i)  # 0, 1, 2

💡 range 不是列表,但可以轉換:

list(range(5))  # [0, 1, 2, 3, 4]

七、映射類型:字典(dict)

字典是鍵值對(key-value)的集合,類似于現實生活中的“字典”。

student = {"name": "王五","age": 22,"city": "上海","grades": [85, 90, 78]
}

字典的常用操作:

# 訪問值
print(student["name"])        # "王五"
print(student.get("age"))     # 22
print(student.get("phone", "未知"))  # 安全訪問,鍵不存在時返回默認值# 修改/添加值
student["age"] = 23           # 修改
student["major"] = "計算機"    # 添加新鍵值對# 刪除鍵值對
del student["city"]
popped = student.pop("grades")  # 彈出并返回值# 遍歷字典
for key in student:print(f"{key}: {student[key]}")# 推薦的遍歷方式
for key, value in student.items():print(f"{key}: {value}")# 獲取所有鍵、值、鍵值對
print(student.keys())    # dict_keys(['name', 'age', 'major'])
print(student.values())  # dict_values(['王五', 23, '計算機'])
print(student.items())   # dict_items([('name', '王五'), ...])
字典推導式
# 創建平方數字典
squares_dict = {x: x**2 for x in range(1, 6)}
print(squares_dict)  # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

八、集合類型

1. 集合(set)—— 無序、唯一

集合存儲不重復的元素,且無序。

unique_numbers = {1, 2, 3, 3, 4}
print(unique_numbers)  # {1, 2, 3, 4}  重復的3被自動去除
集合的常用操作:
set1 = {1, 2, 3}
set2 = {3, 4, 5}# 并集
print(set1 | set2)  # {1, 2, 3, 4, 5}
print(set1.union(set2))# 交集
print(set1 & set2)  # {3}
print(set1.intersection(set2))# 差集
print(set1 - set2)  # {1, 2}
print(set1.difference(set2))# 對稱差集
print(set1 ^ set2)  # {1, 2, 4, 5}# 添加/刪除
set1.add(4)
set1.remove(1)  # 元素必須存在
set1.discard(10)  # 元素不存在也不會報錯

2. 凍結集合(frozenset)

不可變的集合,可以作為字典的鍵。

fset = frozenset([1, 2, 3])
# fset.add(4)  # AttributeError!

九、類型轉換(Type Casting)

Python 允許在不同類型之間轉換。

函數

說明

示例

int(x)

將參數轉換為整數類型

int("123") → 123

float(x)

將參數轉換為浮點數類型

float("3.14") → 3.14

str(x)

將參數轉換為字符串類型

str(100) → "100"

bool(x)

將參數轉換為布爾值類型

bool(1) → True

list(x)

將參數轉換為列表類型

list("abc") → ['a', 'b', 'c']

tuple(x)

將參數轉換為元組類型

tuple([1, 2]) → (1, 2)

set(x)

將參數轉換為集合類型,去除重復元素

set([1, 2, 2]) → {1, 2}

dict(x)

將一系列鍵值對轉換為字典類型

需要提供鍵值對序列

請注意,對于`dict(x)`函數的具體示例,通常需要給出一個由鍵值對組成的可迭代對象作為輸入。例如,可以使用列表中的元組來創建字典:dict([("key1", "value1"), ("key2", "value2")])將會得到{"key1": "value1", "key2": "value2"}這樣的結果。

# 示例:用戶輸入通常是字符串,需要轉換
age_str = input("請輸入年齡:")  # "25"
age_int = int(age_str)
print(age_int + 5)  # 30

?? 轉換失敗會拋出異常:

int("abc")  # ValueError!

十、總結:Python 數據類型核心要點

類型

可變性

有序性

唯一性

典型用途

int/ float

?

?

?

數值計算

str

?

?

?

文本處理

bool

?

?

?

邏輯判斷

list

?

?

?

存儲有序數據列表

tuple

?

?

?

存儲不可變數據序列

dict

?

?(Python 3.7+)

鍵唯一

存儲鍵值對映射

set

?

?

?

存儲唯一元素集合

學習建議:

  1. 熟練掌握 int, float, str, bool, list, dict —— 這是最常用的五種類型。
  2. 理解可變與不可變的區別list 可變,tuple 不可變。
  3. 善用推導式:讓代碼更簡潔高效。
  4. 注意類型轉換:特別是用戶輸入和文件讀取時。

📌 動手練習

  1. 創建一個包含你個人信息的字典(姓名、年齡、城市等)。
  2. 創建一個列表,存儲你喜歡的電影,并用 for 循環打印。
  3. 使用 set 找出兩個列表的共同元素。
# 示例練習
my_info = {"name": "你的名字", "age": 20, "hobbies": ["閱讀", "編程"]}
print(f"我叫{my_info['name']},愛好是{', '.join(my_info['hobbies'])}。")

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/92352.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/92352.shtml
英文地址,請注明出處:http://en.pswp.cn/web/92352.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

WindowsLinux系統 安裝 CUDA 和 cuDNN

Windows安裝前的準備工作 檢查硬件兼容性:確認電腦顯卡為 NVIDIA GPU。通過快捷鍵 Win R 喚出“運行”,輸入“control /name Microsoft.DeviceManager”喚出“設備管理器”,點擊“顯示適配器”查看是否有 NVIDIA 字樣。 驗證 CUDA 支持性&a…

工業數采引擎-通信鏈路SOCKET

通信庫:DotNetty 封裝實現:TcpServer、TcpClient、Udp TCP協議特性:面向連接協議;每個新連接都會創建獨立的ChannelHandler實例;TcpHandler構造函數在每次客戶端連接時觸發 UDP協議特性:無連接協議&#…

PHP小白零基礎入門(附視頻教程)

概述 PHP是一種通用開源腳本語言,常用于服務器端Web開發,具有語法簡單、上手快等特點。視頻教程:https://pan.quark.cn/s/8f214c23301b 搭建開發環境: 選擇集成工具:可選擇XAMPP(支持Windows/Mac/Linux…

驗證碼等待時間技術在酒店自助入住、美容自助與社區場景中的應用必要性研究—仙盟創夢IDE

代碼 代碼 完整<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>驗證碼倒計時</title><s…

Flask從入門到實戰:基礎、進階、項目架構與接口測試

本文將帶你從零開始掌握Flask框架&#xff0c;涵蓋基礎使用、進階技巧、項目架構設計&#xff0c;并提供完整的接口測試客戶端代碼。 目錄一、Flask基礎入門1.1 Flask簡介與安裝1.2 第一個Flask應用1.3 路由與請求處理1.4 請求與響應處理二、Flask進階使用2.1 模板引擎Jinja22.…

華為云產品圖解

框架圖核心說明: 1. 分層邏輯清晰 基礎設施層(IaaS):提供最基礎的計算(ECS/BMS)、存儲(OBS/EVS)、網絡(VPC/CDN)資源,是所有上層服務的 “物理底座”。 平臺服務層(PaaS):基于 IaaS 構建,提供容器編排(CCE)、數據庫(GaussDB)、大數據與 AI(ModelArts)、中…

Git 中如何回退到以前的提交記錄?

回答重點要在 Git 中回退到以前的提交記錄&#xff0c;你可以使用 git reset 命令。這個命令有三個常用選項來控制你想要回退的程度&#xff1a;1&#xff09; git reset --soft <commit> &#xff1a;僅修改 HEAD 指針&#xff0c;不修改索引和工作區內容。2&#xff09…

JavaWeb03——基礎標簽及樣式(表單)(黑馬視頻筆記)

1.表單標簽 及 表單屬性表單標簽是 &#xff1a;<form> 表單屬性有&#xff1a;action 和 method&#xff1b;action屬性&#xff1a;規定向何處發送表單數據。method屬性&#xff1a;規定用什么方法發送數據。&#xff08;get和post&#xff09;get:在發送的url后面拼接…

STM32的SPI通信(軟件讀寫W25Q64)

在了解完I2C通信后&#xff0c;不免會接觸到到SPI通信。而一開始&#xff0c;可能會覺得兩者好似沒什么區別。為什么要學SPI呢&#xff0c;I2C和SPI有什么區別呢。為此我詳細展開說說。1.什么是 SPI&#xff1f;SPI&#xff0c;全稱 Serial Peripheral Interface&#xff0c;中…

子詞分詞器(Byte Pair Encoding + WordPiece)

參考文章&#xff1a;子詞分詞器BPE和WordPiece理解_wordpeice-CSDN博客 子詞分詞器BPE和WordPiece理解_wordpeice-CSDN博客 WordPiece 和 BPE 的區別-CSDN博客 點互信息&#xff08;PMI&#xff09;和正點互信息&#xff08;PPMI&#xff09;-CSDN博客 https://zhuanlan.z…

阿里招AI產品運營

AI產品運營&#xff08;崗位信息已經過jobleap.cn授權&#xff0c;可在csdn發布&#xff09;靈犀互娛 廣州收錄時間&#xff1a; 2025年08月05日職位描述負責AI技術在游戲行業的應用與落地&#xff0c;專注于海外市場的運營中臺建設&#xff1b; 將結合AI技術與游戲行業特點&a…

Git 分支遷移完整指南(結合分支圖分析)

基于分支圖的當前狀態分析 分支圖關鍵信息解讀?分支結構?&#xff1a; #mermaid-svg-gc9SPnwlbrM2FzHf {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-gc9SPnwlbrM2FzHf .error-icon{fill:#552222;}#mermaid-svg-…

小程序省市級聯組件使用

背景。uni-data-picker組件用起來不方便。調整后級聯效果欠佳&#xff0c;會關閉彈窗需要重新選擇。解決方案。讓cursor使用uniapp 原生組件生成懶加載省市級聯 <template><view class"picker-cascader"><view class"cascader-label">&l…

Java技術棧/面試題合集(8)-Redis篇

場景 Java入門、進階、強化、擴展、知識體系完善等知識點學習、性能優化、源碼分析專欄分享: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/140870227 通過對面試題進行系統的復習可以對Java體系的知識點進行查漏補缺。 注: 博客: 霸道流氓氣質-CSDN博…

川翔云電腦:引領開啟算力無邊界時代

一、何為云電腦&#xff1f;重新定義“主機”概念 云電腦將傳統本地計算機的核心硬件資源&#xff08;CPU、GPU、內存、硬盤等&#xff09;集中部署于遠程高性能數據中心&#xff0c;通過網絡技術將虛擬桌面實時傳輸到您的任意訪問設備上。 ??如同將高配主機裝入云端&#…

tc 介紹

目錄 1.背景 2. tc介紹 3. tc 丟包 1.背景 需要使用tc 構造丟包場景&#xff0c;注意tc 丟包不能確定丟棄的是否是payload 數據包&#xff0c;有可能丟棄 ack 包。 2. tc介紹 1. 無法正常使用 [rootpool-100-1-1-18 /]# [rootpool-100-1-1-18 /]# tc qdisc add dev swif…

LabVIEW注冊表操作

?本文圍繞LabVIEW中操作Windows 注冊表的 4 個 VI 展開&#xff0c;介紹其功能、使用場景等并對比&#xff0c;助力工程師高效運用注冊表交互功能。各 VI 功能說明&#xff08;一&#xff09;Write the Key功能&#xff1a;創建新注冊表鍵&#xff0c;設置其值&#xff0c;隨后…

阿里云部署若依后,瀏覽器能正常訪問,但是apifox和小程序訪問后報錯鏈接被重置

項目場景&#xff1a;阿里云部署若依后瀏覽器能正常通過https訪問,但是在apifox和小程序調用接口的時候生報錯E問題描述apifox報錯&#xff1a;curl報錯&#xff1a;通過curl可以清楚的看到通過域名是能準確的訪問到IP地址的&#xff0c;說明這個DNS是沒有問題的&#xff0c;但…

升級 Elasticsearch 到新的 AWS Java SDK

作者&#xff1a;來自 Elastic David Turner, Dianna Hohensee Elasticsearch 使用官方的 AWS Java SDK 集成了某些 Amazon Web Services (AWS) 功能。這些集成最早在近 10 年前發布的 Elasticsearch 2.0 版本中引入。 最近&#xff0c;AWS 宣布 Elasticsearch 過去十年使用的…

從0到1學習微服務項目黑馬頭條day01-《APP端登錄功能實現》

個人主頁&#xff1a;VON文章所屬專欄&#xff1a;黑馬頭條個人唯一微信&#xff1a;微信 有一起學習微服務的小伙伴可以加作者微信&#xff1a;單擊即可添加 目錄 一、前言 二、項目概述 1、技術棧 2、項目引入 三、改造項目 1、創建heima-leadnews-user 2、創建實體…