溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python二維列表創(chuàng)建、轉(zhuǎn)換及訪問的方法

發(fā)布時間:2022-04-27 14:33:51 來源:億速云 閱讀:430 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“Python二維列表創(chuàng)建、轉(zhuǎn)換及訪問的方法”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“Python二維列表創(chuàng)建、轉(zhuǎn)換及訪問的方法”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。

    一、概念

    二維列表的元素還是列表(列表的嵌套),稱之為二維列表。

    需要通過行標(biāo)和列標(biāo)來訪問二維列表的元素

    二、創(chuàng)建二維列表

    1、追加一維列標(biāo)來生成二維列標(biāo)

    生成一個4行3列的二維列表

    row1 = [3, 4, 5]
    row2 = [1, 5, 9]
    row3 = [2, 5, 8]
    row4 = [7, 8, 9]
    matrix = []
    matrix.append(row1)
    matrix.append(row2)
    matrix.append(row3)
    matrix.append(row4)
    print(matrix)

    輸出結(jié)果:

    [[3, 4, 5], [1, 5, 9], [2, 5, 8], [7, 8, 9]]

    2、直接賦值生成二維列表

    定義一個3行4列的二維列表

    matrix = [[], [], []]
    matrix[0] = [3, 4, 5, 6]
    matrix[1] = [8, 7, 9, 5]
    matrix[2] = [0, 2, 5, 8]
    print(matrix)

    輸出結(jié)果:

    [[3, 4, 5, 6], [8, 7, 9, 5], [0, 2, 5, 8]]

    三、一維列標(biāo)與二維列表的轉(zhuǎn)換

    1、一維列表轉(zhuǎn)換成二維列表

    將1到24的全部數(shù)字按順序放到一個4行6列的二維列表里

    # 將1到24的全部數(shù)字按順序放到一個4行6列的二維列表里
    nums = []
    for i in range(1, 25):
        nums.append(i)
    
    martix = []
    for k in range(4):
        row = []
        for j in range(1, 7):
            row.append(j + 6 * k)
        martix.append(row)
    
    for arr in martix:
        print(arr)

    輸出結(jié)果:

    [1, 2, 3, 4, 5, 6]
    [7, 8, 9, 10, 11, 12]
    [13, 14, 15, 16, 17, 18]
    [19, 20, 21, 22, 23, 24]

    2、二維列表轉(zhuǎn)換成一維列表

    將一個3行5列的二維列表扁平化一維列表

    # 將一個3行5列的二維列表扁平化一維列表
    nums = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]
    arr = []
    for i in nums:
        for j in i:
            arr.append(j)
    print(arr)

    輸出結(jié)果:

    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

    3、利用NumPy實現(xiàn)數(shù)組的變維操作

    利用NumPy數(shù)組提供的 reshape(m, n) 實現(xiàn)數(shù)組的變維

    (1)一維數(shù)組變成二維數(shù)組

    In [31]:import numpy as np
    
    In [32]:arr1 = np.arange(1,25)  # arange() 創(chuàng)建一個等差數(shù)組
    
    In [33]:arr2 = arr1.reshape(4, 6)  # reshape()一維轉(zhuǎn)二維
    
    In [34]:arr2
    Out[34]: 
    array([[ 1,  2,  3,  4,  5,  6],
           [ 7,  8,  9, 10, 11, 12],
           [13, 14, 15, 16, 17, 18],
           [19, 20, 21, 22, 23, 24]])
    
    In [35]:arr2 = arr1.reshape(3, 8)
    
    In [36]:arr2
    Out[36]: 
    array([[ 1,  2,  3,  4,  5,  6,  7,  8],
           [ 9, 10, 11, 12, 13, 14, 15, 16],
           [17, 18, 19, 20, 21, 22, 23, 24]])

    (2)二維數(shù)組轉(zhuǎn)換成一維數(shù)組

    In [36]:arr2
    Out[36]: 
    array([[ 1,  2,  3,  4,  5,  6,  7,  8],
           [ 9, 10, 11, 12, 13, 14, 15, 16],
           [17, 18, 19, 20, 21, 22, 23, 24]])
    
    In [37]:arr1 = arr2.reshape(1, 24)[0]
    
    In [38]:arr1
    Out[38]: 
    array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24])

    四、訪問二維列表

    通過行標(biāo)與列標(biāo)來訪問二維列表(可以通過切片運(yùn)算訪問行)

    1、訪問行

    In [36]:arr2
    Out[36]: 
    array([[ 1,  2,  3,  4,  5,  6,  7,  8],
           [ 9, 10, 11, 12, 13, 14, 15, 16],
           [17, 18, 19, 20, 21, 22, 23, 24]])
    
    In [39]:arr2[1]
    Out[39]: array([ 9, 10, 11, 12, 13, 14, 15, 16])

    2、訪問元素

    In [40]:arr2
    Out[40]: 
    array([[ 1,  2,  3,  4,  5,  6,  7,  8],
           [ 9, 10, 11, 12, 13, 14, 15, 16],
           [17, 18, 19, 20, 21, 22, 23, 24]])
    
    In [41]:arr2[1][2]  # 第2行第3列
    Out[41]: 11

    3、NumPy二維數(shù)組的訪問

    In [42]:import numpy as np
    
    In [43]:arr2
    Out[43]: 
    array([[ 1,  2,  3,  4,  5,  6,  7,  8],
           [ 9, 10, 11, 12, 13, 14, 15, 16],
           [17, 18, 19, 20, 21, 22, 23, 24]])
    
    In [44]:arr2[1]  # 訪問行
    Out[44]: array([ 9, 10, 11, 12, 13, 14, 15, 16])
    
    In [45]:arr2[:, 0]  # 訪問列
    Out[45]: array([ 1,  9, 17])
    
    In [46]:arr2[2, 3]  # 訪問元素
    Out[46]: 20

    補(bǔ)充:二維列表的實戰(zhàn)應(yīng)用

    使用二維列表輸出不同版式的古詩《靜夜思》

    -- 橫版 --

    床前明月光

    疑是地上霜

    舉頭望明月

    低頭思故鄉(xiāng)

    -- 豎版 --

    低舉疑床

    頭頭是前

    思望地明

    故明上月

    鄉(xiāng)月霜光

    在線溫馨提醒:橫版是從左往右讀,豎版是從右往左讀的。

    我們在IDLE中新建一個文件,在該文件中,定義4個字符串為《靜夜思》的詩句,再定義一個二維列表,使用嵌套的for循環(huán),將古詩以橫版輸出,再將二維列表進(jìn)行逆序排列,最后使用嵌套的for循環(huán),將古詩以豎版輸出,代碼如下:

    str1 = '床前明月光'
    str2 = '疑是地上霜'
    str3 = '舉頭望明月'
    str4 = '低頭思故鄉(xiāng)'
    verse = [list(str1), list(str2), list(str3), list(str4)]   # 定義一個二維列表
    print('\n-- 橫版 --\n')
    for i in range(4):                                         # 循環(huán)古詩的每一行
        for j in range(5):                                     # 循環(huán)每一行的每個字(列)
            if j == 4:                                         # 如果是一行中的最后一個字
                print(verse[i][j])                             # 換行輸出
            else:
                print(verse[i][j], end='')                     # 不換行輸出
     
    verse.reverse()                                            # 對列表進(jìn)行逆序排列
    print('\n-- 豎版 --\n')
    for i in range(5):                                         # 循環(huán)每一行的每個字(列)
        for j in range(4):                                     # 循環(huán)新逆序排列后的第一行
            if j == 3:                                         # 如果是最后一行
                print(verse[j][i])                             # 換行輸出
            else:
                print(verse[j][i], end='')                     # 不換行輸出

    運(yùn)行結(jié)果如下:

    -- 橫版 --
     
    床前明月光
    疑是地上霜
    舉頭望明月
    低頭思故鄉(xiāng)
     
    -- 豎版 --
     
    低舉疑床
    頭頭是前
    思望地明
    故明上月
    鄉(xiāng)月霜光
    >>> 

    讀到這里,這篇“Python二維列表創(chuàng)建、轉(zhuǎn)換及訪問的方法”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點(diǎn)還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI