搜尋
首頁後端開發Python教學詳細介紹Python3資料結構知識點

本篇文章為大家帶來了關於python的相關知識,其中主要介紹了資料結構的相關問題,包括了數字、字串、列表、元組、字典等等的相關內容,希望對大家有幫助。

詳細介紹Python3資料結構知識點

推薦學習:python影片教學

#數字Number

  • ## 整數( int) - 通常稱為是整數或整數,是正或負整數,不帶小數點。 Python3 整型是沒有限制大小的,可以當作 Long 型別使用。布林(bool)是整型的子型別。

  • 浮點型(float) - 浮點型由整數部分與小數部分組成,浮點型也可以使用科學計數法表示(2.5e2 = 2.5 x 102 = 250)

  • 複數( (complex)) - 複數由實數部分和虛數部分構成,可以用a bj,或者complex(a,b)表示, 複數的實部a和虛部b都是浮點型。

數字型別轉換

  • int(x) 將x轉換為整數。

  • float(x) 將x轉換到一個浮點數。

  • complex(x) 將x轉換為複數,實數部分為 x,虛數部分為 0。

  • complex(x, y) 將 x 和 y 轉換到複數,實數部分為 x,虛數部分為 y。 x 和 y 是數字表達式。

數字運算

# + - * / %(取余) **(幂运算)
# 整数除法中,除法 / 总是返回一个浮点数,
# 如果只想得到整数的结果,丢弃可能的分数部分,可以使用运算符 //
print(8 / 5)  # 1.6
print(8 // 5)  # 1
# 注意:// 得到的并不一定是整数类型的数,它与分母分子的数据类型有关系
print(8 // 5.0)  # 1.0
# 使用 ** 操作来进行幂运算
print(5 ** 2)  # 5的平方 25

字串str

#字串的查詢

  • index():尋找子字串substr第一次出現的位置,如果尋找的子字串不存在時,則拋出ValueErrorrindex()例外

  • rindex():尋找子字串substr最後一次出現的位置,如果尋找的子字串不存在時,則拋出ValueError()例外

  • #find():找出子字串substr第一次出現的位置,如果尋找的子當字串不存在時,則傳回-1

  • rfind():尋找子字串substr最後一次出現的位置,如果尋找的子字串不存在時,則傳回-1

s = 'hello, hello'
print(s.index('lo'))  # 3
print(s.find('lo'))  # 3
print(s.find('k'))  # -1
print(s.rindex('lo'))  # 10
print(s.rfind('lo'))  # 10
字串大小寫轉換

  • upper():把字串中所有字元都轉成大寫字母

  • lower():把字串中所有字元都轉成小寫字母

  • #swapcase():把字串中所有大寫字母轉成小寫字母,把所有小寫字母都轉成大寫字母

  • capitalize():把第一個字元轉換為大寫,其餘字元轉換為小寫

  • title():把每個單字的第一個字元轉換為大寫,把每個單字的剩餘字元轉換成小寫

s = 'hello, Python'
print(s.upper())  # HELLO, PYTHON
print(s.lower())  # hello, python
print(s.swapcase())  # HELLO, pYTHON
print(s.capitalize())  # Hello, python
print(s.title())  # Hello, Python
字串對齊

  • center():居中對齊,第1個參數指定寬度,第2個參數指定填充符,預設為空格,如果設定寬度小於實際寬度則傳回原字串

  • #ljust():左對齊,第1個參數指定寬度,第2個參數指定填充符,預設為空格,如果設定寬度小於實際寬度則傳回原字串

  • #rjust():右對齊,第1個參數指定寬度,第2個參數指定填充符,預設為空格,如果設定寬度小於實際寬度則傳回原字串

  • zfill():右對齊,左邊用0填充,該方法只接收一個參數,用於指定字串的寬度,如果指定的寬度小於等於字串的長度,返回字串本身

  • #
s = 'hello,Python'
'''居中对齐'''
print(s.center(20, '*'))  # ****hello,Python****
'''左对齐 '''
print(s.ljust(20, '*'))  # hello,Python********
print(s.ljust(5, '*'))  # hello,Python
'''右对齐'''
print(s.rjust(20, '*'))  # ********hello,Python
'''右对齐,使用0进行填充'''
print(s.zfill(20))  # 00000000hello,Python
print('-1005'.zfill(8))  # -0001005
字串拆分、切片

拆分

    #split(): 從字串的左邊開始拆分
  • rsplit():從字串的右邊開始拆分
    • 預設的拆分字元是空格,回傳值是一個列表
    • 透過參數sep 指定拆分字串的拆分符號
    • 透過參數maxsplit 指定拆分宇符串時的最大拆分次數,在經過最大次數拆分之後,剩餘的子字串會單獨做為一部分
  • #
s = 'hello word Python'
print(s.split())  # ['hello', 'word', 'Python']
s1 = 'hello|word|Python'
print(s1.split(sep='|'))  # ['hello', 'word', 'Python']
print(s1.split('|', 1))  # ['hello', 'word|Python'] # 左侧开始
print(s1.rsplit('|', 1))  # ['hello|word', 'Python'] # 右侧开始

切片

s = 'hello,world'
print(s[:5])  # hello 从索引0开始,到4结束
print(s[6:])  # world 从索引6开始,到最后一个元素
print(s[1:5:1])  # ello 从索引1开始,到4结束,步长为1
print(s[::2])  # hlowrd 从开始到结束,步长为2
print(s[::-1])  # dlrow,olleh 步长为负数,从最后一个元素(索引-1)开始,到第一个元素结束
print(s[-6::1])  # ,world 从索引-6开始,到最后一个结束
字串判斷相關

    isidentifier():判斷指定的字串是不是合法的識別符
  • isspace():判斷指定的字串是否全部由空白字元組成(回車、換行,水平製表符)
  • isalpha():判斷指定的字串是否全部由字母組成
  • isdecimal():判斷指定字串是否全部由十進位的數字組成
  • isnumeric():判斷指定的字串是否全部由數字組成
  • isalnum ():判斷指定字串是否全部由字母和數字組成
字串其他運算

#字串替換

    replace()
s = 'hello,Python,Python,Python'
print(s.replace('Python', 'Java'))  # 默认全部替换 hello,Java,Java,Java
print(s.replace('Python', 'Java', 2))  # 设置替换个数 hello,Java,Java,Python

字串連線

    #join()
lst = ['hello', 'java', 'Python']
print(','.join(lst))  # hello,java,Python
print('|'.join(lst))  # hello|java|Python
格式化字串輸出

    %佔位符:輸出前加%,多個參數用小括號和逗號
    • %s 字串
    • %i 或%d 整數
    • -%f 浮點數
  • {}佔位符: 呼叫format()方法
  • f-string:把變數寫在{}中
name = '张三'
age = 20
print('我叫%s, 今年%d岁' % (name, age))
print('我叫{0}, 今年{1}岁,小名也叫{0}'.format(name, age))
print(f'我叫{name}, 今年{age}岁')
# 我叫张三, 今年20岁
# 我叫张三, 今年20岁,小名也叫张三
# 我叫张三, 今年20岁
設定數字的寬度和精確度

# 设置数字的宽度和精度
'''%占位'''
print('%10d' % 99)  # 10表示宽度
print('%.3f' % 3.1415926)  # .3f表示小数点后3位
print('%10.3f' % 3.1415926)  # 同时设置宽度和精度
'''{}占位 需要使用:开始'''
print('{:.3}'.format(3.1415926))  # .3表示3位有效数字
print('{:.3f}'.format(3.1415926))  # .3f表示小数点后3位
print('{:10.3f}'.format(3.1415926))  # .3f表示小数点后3位
#        99
#3.142
#     3.142
#3.14
#3.142
#     3.142
字串編碼

s = '但愿人长久'
# 编码 将字符串转换成byte(二进制)数据
print(s.encode(encoding='gbk')) #gbk,中文占用2个字节
print(s.encode(encoding='utf-8')) #utf-8,中文占用3个字节
# 解码 将byte(二进制)转换成字符串数据
# 编码与解码中,encoding方式需要一致
byte = s.encode(encoding='gbk')
print(byte.decode(encoding='gbk'))
# b'\xb5\xab\xd4\xb8\xc8\xcb\xb3\xa4\xbe\xc3'
# b'\xe4\xbd\x86\xe6\x84\xbf\xe4\xba\xba\xe9\x95\xbf\xe4\xb9\x85'
# 但愿人长久

清單list

##清單的特徵

    有序序列
  • 索引映射唯一個資料
  • 可以存储重复数据

  • 任意数据类型混存

  • 根据需要动态分配和回收内存

列表的创建

  • []:使用中括号
  • list():使用内置函数list()
  • 列表生成式
    • 语法格式:[i*i for i in range(i, 10)]

    • 解释:i表示自定义变量,i*i表示列表元素的表达式,range(i, 10)表示可迭代对象

      print([i * i for i in range(1, 10)])# [1, 4, 9, 16, 25, 36, 49, 64, 81]

列表元素的查询

  1. 判断指定元素在列表中是否存在
in / not in
  1. 列表元素的遍历
for item in list:
	print(item)
  1. 查询元素索引
list.index(item)
  1. 获取元素
list = [1, 4, 9, 16, 25, 36, 49, 64, 81]print(list[3])  # 16print(list[3:6])    # [16, 25, 36]

列表元素的增加

  • append():在列表的末尾添加一个元素

  • extend():在列表的末尾至少添加一个元素

  • insert0:在列表的指定位置添加一个元素

  • 切片:在列表的指定位置添加至少一个元素

列表元素的删除

  • rerove():一次删除一个元素,
    重复元素只删除第一个,
    元素不存在抛出ValceError异常

  • pop():删除一个指定索引位置上的元素,
    指定索引不存在抛出IndexError异常,
    不指定索引,删除列表中最后一个元素

  • 切片:一次至少删除一个元素

  • clear0:清空列表

  • del:删除列表

列表元素的排序

  • sort(),列表中的所有元素默认按照从小到大的顺序进行排序,可以指定reverse= True,进行降序排序,是对原列表的操作。
list.sort()
  • sorted(),可以指定reverse—True,进行降序排序,原列表不发生改变,产生新的列表。
sorted(list)

知识点总结

詳細介紹Python3資料結構知識點

元组 tuple

元组的特点

Python的元组与列表类似,不同之处在于元组的元素不能修改。

元组使用小括号,列表使用方括号

元组的创建

  • 直接使用小括号(), 小括号可以省略
t = ('Python', 'hello', 90)
  • 使用内置函数tuple(), 若有多个元素必须加小括号
tuple(('Python', 'hello', 90))
  • 只包含一个元素的元组,需要使用小括号和逗号
t = (10,)

知识点总结

詳細介紹Python3資料結構知識點

字典 dict

字典的特点

  • 以键值对的方式存储,key唯一
  • key必须是不可变对象
  • 字典是可变序列
  • 字典是无序序列 (注意:自Python3.7本后,dict 对象的插入顺序保留性质已被声明为 Python 语言规范的正式部分。即,Python3.7之后,字典是有序序列,顺序为字典的插入顺序)

字典的创建

  • {}:使用花括号
  • 使用内置函数dict()
  • zip():字典生成式
items = ['fruits', 'Books', 'Others']
prices = [12, 36, 44]
d = {item.upper(): price for item, price in zip(items, prices)}
print(d)    # {'FRUITS': 12, 'BOOKS': 36, 'OTHERS': 44}

字典元素的获取

  • []:[]取值
    scores[‘张三’],若key不存在,抛出keyError异常
  • get():get()方法取值,若key不存在,返回None,还可以设置默认返回值

字典元素的新增

user = {"id": 1, "name": "zhangsan"}
user["age"] = 25
print(user)  # {'id': 1, 'name': 'zhangsan', 'age': 25}

字典元素的修改

user = {"id": 1, "name": "zhangsan", "age": 25}
user["age"] = 18
print(user)  # {'id': 1, 'name': 'zhangsan', 'age': 18}

字典元素的删除

  • del :删除指定的键值对或者删除字典
user = {"id": 1, "name": "zhangsan"}del user["id"]print(user)	# {'name': 'zhangsan'}del user
  • claer():清空字典中的元素
user = {"id": 1, "name": "zhangsan"}user.clear()print(user)  # {}

获取字典视图

  • keys():获取字典中所有key
  • values():获取字典中所有value
  • items():获取字典中所有key,value键值对

字典元素的遍历

  • 遍历key,再通过key获取value
scores = {'张三': 100, '李四': 95, '王五': 88}for name in scores:
    print(name, scores[name])
  • 通过items()方法,同时遍历key,value
scores = {'张三': 100, '李四': 95, '王五': 88}for name, score in scores.items():
    print(name, score)

知识点总结

詳細介紹Python3資料結構知識點

集合 set

集合的特点

  • 集合是可变序列
  • 集合是没有value的字典
  • 集合中元素不重复
  • 集合中元素是无序的

集合的创建

  • {}
s = {'Python', 'hello', 90}
  • 内置函数set()
print(set("Python"))print(set(range(1,6)))print(set([3, 4, 7]))print(set((3, 2, 0)))print(set({"a", "b", "c"}))# 定义空集合:set()print(set())
  • 集合生成式
print({i * i for i in range(1, 10)})# {64, 1, 4, 36, 9, 16, 49, 81, 25}

集合的操作

  1. 集合元素的判断操作
  • in / not in
  1. 集合元素的新增操作
  • add():一次添中一个元素
  • update(:)添加多个元素
  1. 集合元素的删除操作
  • remove():删除一个指定元素,如果指定的元素不存在抛出KeyError
  • discard(:)删除一个指定元素,如果指定的元素不存在不抛异常
  • pop():随机删除一个元素
  • clear():清空集合

集合间的关系

  1. 两个集合是否相等:可以使用运算符 == 或 != 进行判断,只要元素相同就相等

  2. 一个集合是否是另一个集合的子集:issubset()

s1 = {10, 20, 30, 40, 50, 60}s2 = {10, 30, 40}s3 = {10, 70}print(s2.issubset(s1))  
# Trueprint(s3.issubset(s1))  # False
  1. 一个集合是否是另一个集合的超集:issuperset()
print(s1.issuperset(s2))  # Trueprint(s1.issuperset(s3))  # False
  1. 两个集合是否无交集:isdisjoint()
s1 = {10, 20, 30, 40, 50, 60}s2 = {10, 30, 40}s3 = {20, 70}print(s1.isdisjoint(s2))  
# False 有交集print(s3.isdisjoint(s2))  # True  无交集

集合的数学操作

  1. 交集: intersection() 与 &等价,两个集合的交集
s1 = {10, 20, 30, 40}s2 = {20, 30, 40, 50, 60}print(s1.intersection(s2))  # {40, 20, 30}print(s1 & s2)  # {40, 20, 30}
  1. 并集: union() 与 | 等价,两个集合的并集
print(s1.union(s2))  # {40, 10, 50, 20, 60, 30}print(s1 | s2)  # {40, 10, 50, 20, 60, 30}
  1. 差集: difference() 与 - 等价
print(s2.difference(s1))  # {50, 60}print(s2 - s1)  # {50, 60}
  1. 对称差集:symmetric_difference() 与 ^ 等价
print(s2.symmetric_difference(s1))  # {10, 50, 60}print(s2 ^ s1)  # {10, 50, 60}

知识点总结

詳細介紹Python3資料結構知識點

列表、元组、字典、集合总结

推荐学习:python教程

以上是詳細介紹Python3資料結構知識點的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:CSDN。如有侵權,請聯絡admin@php.cn刪除
您如何將元素附加到Python數組?您如何將元素附加到Python數組?Apr 30, 2025 am 12:19 AM

Inpython,YouAppendElementStoAlistusingTheAppend()方法。 1)useappend()forsingleelements:my_list.append(4).2)useextend()orextend()或= formultiplelements:my_list.extend.extend(emote_list)ormy_list = [4,5,6] .3)useInsert()forspefificpositions:my_list.insert(1,5).beaware

您如何調試與Shebang有關的問題?您如何調試與Shebang有關的問題?Apr 30, 2025 am 12:17 AM

調試shebang問題的方法包括:1.檢查shebang行確保是腳本首行且無前置空格;2.驗證解釋器路徑是否正確;3.直接調用解釋器運行腳本以隔離shebang問題;4.使用strace或truss跟踪系統調用;5.檢查環境變量對shebang的影響。

如何從python數組中刪除元素?如何從python數組中刪除元素?Apr 30, 2025 am 12:16 AM

pythonlistscanbemanipulationusseveralmethodstoremovelements:1)theremove()MethodRemovestHefirStocCurrenceOfAstePecificiedValue.2)thepop()thepop()methodRemovesandReturnturnturnturnsanaNelementAgivenIndex.3)

可以在Python列表中存儲哪些數據類型?可以在Python列表中存儲哪些數據類型?Apr 30, 2025 am 12:07 AM

pythonlistscanstoreanydatate型,包括素,弦,浮子,布爾人,其他列表和迪克尼亞式

在Python列表上可以執行哪些常見操作?在Python列表上可以執行哪些常見操作?Apr 30, 2025 am 12:01 AM

pythristssupportnumeroferations:1)addingElementSwithAppend(),Extend(),andInsert()。 2)emovingItemSusingRemove(),pop(),andclear(),and clear()。 3)訪問andModifyingandmodifyingwithIndexingandSlicing.4)

如何使用numpy創建多維數組?如何使用numpy創建多維數組?Apr 29, 2025 am 12:27 AM

使用NumPy創建多維數組可以通過以下步驟實現:1)使用numpy.array()函數創建數組,例如np.array([[1,2,3],[4,5,6]])創建2D數組;2)使用np.zeros(),np.ones(),np.random.random()等函數創建特定值填充的數組;3)理解數組的shape和size屬性,確保子數組長度一致,避免錯誤;4)使用np.reshape()函數改變數組形狀;5)注意內存使用,確保代碼清晰高效。

說明Numpy陣列中'廣播”的概念。說明Numpy陣列中'廣播”的概念。Apr 29, 2025 am 12:23 AM

播放innumpyisamethodtoperformoperationsonArraySofDifferentsHapesbyAutapityallate AligningThem.itSimplifififiesCode,增強可讀性,和Boostsperformance.Shere'shore'showitworks:1)較小的ArraySaraySaraysAraySaraySaraySaraySarePaddedDedWiteWithOnestOmatchDimentions.2)

說明如何在列表,Array.Array和用於數據存儲的Numpy數組之間進行選擇。說明如何在列表,Array.Array和用於數據存儲的Numpy數組之間進行選擇。Apr 29, 2025 am 12:20 AM

forpythondataTastorage,choselistsforflexibilityWithMixedDatatypes,array.ArrayFormeMory-effficityHomogeneousnumericalData,andnumpyArraysForAdvancedNumericalComputing.listsareversareversareversareversArversatilebutlessEbutlesseftlesseftlesseftlessforefforefforefforefforefforefforefforefforefforlargenumerdataSets; arrayoffray.array.array.array.array.array.ersersamiddreddregro

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!