首頁 > 軟體

一文帶你搞懂Python中的資料容器

2022-11-27 14:01:20

一、資料容器:list(列表)

列表內的每一個資料,稱之為元素

  • 以 [] 作為標識
  • 列表內每一個元素之間用, 逗號隔開

定義語法:

[元素1, 元素2, 元素3, ......]

例:

list = ['iii', 666, '你好']

1.1 list取出元素

列表中的每一個元素,都有其位置下標索引,從前向後的方向,從0開始,依次遞增或者遞減

語法:列表[下標],即可取出

1.2 列表的常用操作(方法)

1.2.1 列表的查詢功能(方法)

功能:查詢指定元素在列表的下標,如果找不到,報錯ValueError

語法:列表.index(元素)

1.2.2 列表的修改功能(方法)

修改特定位置(索引)的元素值:

語法:列表[下標] = 值

可以使用如上語法,直接對指定下標(正向、反向下標均可)的值進行:重新賦值(修改)

插入元素:

語法:列表.insert(下標, 元素),在指定的下標位置,插入指定的元素

追加元素:

語法:列表.append(元素),將指定元素,追加到列表的尾部

追加元素方式2:

語法:列表.extend(其它資料容器),將其它資料容器的內容取出,依次追加到列表尾部

刪除元素:

  • 語法1:del 列表[下標]
  • 語法2:列表.pop(下標)

刪除某元素在列表中的第一個匹配項:

語法:列表.remove(元素)

清空列表內容:

語法:列表.clear()

統計某元素在列表內的數量

語法:列表.count(元素)

1.2.3 列表的查詢功能(方法)

統計列表內,有多少元素

語法:len(列表)

可以得到一個int數位,表示列表內的元素數量

list = [21, 25, 21, 23, 22, 20]

list.append(31)
list.extend([29, 33, 30])
listone = list.pop()
idx = list.index(31)
print(idx)
使用方式作用
列表.append(元素)向列表中追加一個元素
列表.extend(容器)將資料容器的內容依次取出,追加到列表尾部
列表.insert(下標, 元素)在指定下標處,插入指定的元素
del 列表[下標]刪除列表指定下標元素
列表.pop(下標)刪除列表指定下標元素
列表.remove(元素)從前向後,刪除此元素第一個匹配項
列表.clear()清空列表
列表.count(元素)統計此元素在列表中出現的次數
列表.index(元素)查詢指定元素在列表的下標
找不到報錯ValueError
len(列表)統計容器內有多少元素

1.3 列表的特點

  • 可以容納多個元素(上限為2**63-1、9223372036854775807個)
  • 可以容納不同型別的元素(混裝)
  • 資料是有序儲存的(有下標序號)
  • 允許重複資料存在
  • 可以修改(增加或刪除元素等)

1.4 列表的遍歷

1.4.1 列表的遍歷 - while迴圈

def while_list():
    list = [11, 12, 13]
    index = 0
    while index < len(list):
        el = list[index]
        print(f'元素:{el}')

        index += 1

while_list()

1.4.2 列表的遍歷 - for迴圈

def for_list():
    list = [1, 2, 3, 4, 5]
    for v in list:
        print(f'元素:{v}')

for_list()

練習案例:取出列表內的偶數

list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
index = 0
new_list = []
while index < len(list):
    if list[index] % 2 == 0:
        new_list.append(list[index])

    index += 1

for val in list:
    if val % 2 == 0:
        new_list.append(val)

print(new_list)

二、資料容器:tuple(元組)

元組定義:定義元組使用小括號,且使用逗號隔開各個資料,資料可以是不同的資料型別。

元組一旦定義完成,就不可修改

元組由於不可修改的特性,所以其操作方法非常少。

元組也可以被遍歷,同列表一樣。

可以使用while迴圈和for迴圈遍歷它

方法作用
index()查詢某個資料,如果資料存在返回對應的下標,否則報錯
count()統計某個資料在當前元組出現的次數
len(元組)統計元組內的元素個數
t1 = (1, 11)
print(f'{t1}, type:{type(t1)}')
num = t1.index(11)

元組的特點:

  • 可以容納多個資料
  • 可以容納不同型別的資料(混裝)
  • 資料是有序儲存的(下標索引)
  • 允許重複資料存在
  • 不可以修改(增加或刪除元素等)
  • 支援for迴圈

三、資料容器:str(字串)

3.1 字串的下標(索引)

和其它容器如:列表、元組一樣,字串也可以通過下標進行存取

  • 從前向後,下標從0開始
  • 從後向前,下標從-1開始

同元組一樣,字串是一個:無法修改的資料容器。

所以:

  • 修改指定下標的字元 (如:字串[0] = “a”)
  • 移除特定下標的字元 (如:del 字串[0]、字串.remove()、字串.pop()等)
  • 追加字元等 (如:字串.append())
  • 均無法完成。如果必須要做,只能得到一個新的字串,舊的字串是無法修改

3.2 字串常用操作彙總

操作說明
字串[下標]根據下標索引取出特定位置字元
字串.index(字串)查詢給定字元的第一個匹配項的下標
字串.replace(字串1, 字串2)將字串內的全部字串1,替換為字串2
不會修改原字串,而是得到一個新的
字串.split(字串)按照給定字串,對字串進行分隔 <br/>不會修改原字串,而是得到一個新的列表
字串.strip()<br/> 字串.strip(字串)移除首尾的空格和換行符或指定字串
字串.count(字串)統計字串內某字串的出現次數
len(字串)統計字串的字元個數

3.3 字串的遍歷

同列表、元組一樣,字串也支援while迴圈和for迴圈進行遍歷

str = '小小叮噹'
index = 0
while index < len(str):
    print(str[index])
    index += 1


for v in str:
    print(v)

3.4 字串的特點

作為資料容器,字串有如下特點:

  • 只可以儲存字串
  • 長度任意(取決於記憶體大小)
  • 支援下標索引
  • 允許重複字串存在
  • 不可以修改(增加或刪除元素等)
  • 支援for迴圈

四、資料容器(序列)的切片

序列支援切片,即:列表、元組、字串,均支援進行切片操作
切片:從一個序列中,取出一個子序列

語法:序列[起始下標:結束下標:步長]

表示從序列中,從指定位置開始,依次取出元素,到指定位置結束,得到一個新序列:

起始下標表示從何處開始,可以留空,留空視作從頭開始

結束下標(不含)表示何處結束,可以留空,留空視作擷取到結尾

步長表示,依次取元素的間隔

  • 步長1表示,一個個取元素
  • 步長2表示,每次跳過1個元素取
  • 步長N表示,每次跳過N-1個元素取
  • 步長為負數表示,反向取(注意,起始下標和結束下標也要反向標記)
my_list = [1, 2, 3, 4, 5]
print(my_list[1:4:2])

my_tuple = (0, 1, 2, 3, 4, 5, 6)
print(my_tuple[0:6:2])
str = 'ay,呀當叮小來,nohtyP學'
new_str = str[::-1]
# print(new_str)
list = new_str.split(',')
print(list[1].replace('來', ''))

五、資料容器:set(集合)

集合的定義:

# 定義集合字面量
{元素,元素, ..., 元素}
# 定義集合變數
變數名稱 = {元素, 元素, ..., 元素}
# 定義空集合 
變數名稱 = set()

操作說明
集合.add(元素)集合內新增一個元素
集合.remove(元素)移除集合內指定的元素
集合.pop()從集合中隨機取出一個元素
集合.clear()將集合清空
集合1.difference(集合2)得到一個新集合,內含2個集合的差集
原有的2個集合內容不變
集合1.difference_update(集合2)在集合1中,刪除集合2中存在的元素
集合1被修改,集合2不變
集合1.union(集合2)得到1個新集合,內含2個集合的全部元素<br/> 原有的2個集合內容不變
len(集合)得到一個整數,記錄了集合的元素數量

集合的特點:

  • 可以容納多個資料
  • 可以容納不同型別的資料(混裝)
  • 資料是無序儲存的(不支援下標索引)
  • 不允許重複資料存在
  • 可以修改(增加或刪除元素等)
  • 支援for迴圈

例:

my_list = ['111', '222', '333', '111', '333', 'itit', 'hehe', 'itit']
new_set = set()

for val in my_list:
    new_set.add(val)

print(new_set)

六、資料容器:dict(字典、對映)

字典的定義:同樣使用{},不過儲存的元素是一個個的:鍵值對

注意:

  • 使用{}儲存原始,每一個元素是一個鍵值對
  • 每一個鍵值對包含Key和Value(用冒號分隔)
  • 鍵值對之間使用逗號分隔
  • Key和Value可以是任意型別的資料(key不可為字典)
  • Key不可重複,重複會對原有資料覆蓋

提示:

  • 鍵值對的Key和Value可以是任意型別(Key不可為字典)
  • 字典內Key不允許重複,重複新增等同於覆蓋原有資料
  • 字典不可用下標索引,而是通過Key檢索Value
dic = {
    '王': {
        '部門': '科技部',
        '工資': 3000,
        '級別': 1
    },
    '周': {
        '部門': '市場部',
        '工資': 5000,
        '級別': 2
    },
    '林': {
        '部門': '市場部',
        '工資': 7000,
        '級別': 3
    },
    '張': {
        '部門': '科技部',
        '工資': 4000,
        '級別': 1
    },
}

for key in dic:
    if dic[key]['級別'] == 1:
        dic[key]['級別'] += 1
        dic[key]['工資'] += 1000

print(dic)

到此這篇關於一文帶你搞懂Python中的資料容器的文章就介紹到這了,更多相關Python資料容器內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com