1. 程式人生 > 其它 >Python基礎語法小結2(列表)

Python基礎語法小結2(列表)

技術標籤:python

Python基礎語法小結2(列表)

1. 序列(sequence)

  • 序列是Python中最基本的一種資料結構。序列用於儲存一組有序的資料,所有的資料在序列當中都有一個唯一的位置(索引)並且序列中的資料會按照新增的順序來分配索引
  • 序列的分類
    • 可變序列(序列中的元素可以改變):例如 列表(list)
    • 不可變序列(序列中的元素不能改變):例如 字串(str)元組(tuple)

2. 列表

2.1 列表的建立
  • 列表是最常用的Python資料型別,它可以作為一個方括號內的逗號分隔值出現。

  • 列表的資料項不需要具有相同的型別

  • 建立一個列表,只要把逗號分隔的不同的資料項使用方括號括起來即可。

    lst1 = []  #建立一個空的列表
    lst2 = ['Python', 'Java', 'R', 'SPSS']  # 字串列表
    lst3 = [1, 2, 3, 4, 5]  # 整型列表
    lst4 = [1, 'Python', 2, 'Java', 'R', 3] # 混合資料型別的列表
    
    # 使用print方法輸出列表
    print(lst1)
    print(lst2)
    print(lst3)
    print(lst4)
    
2.2 訪問列表中的項

列表中的每一項都有其位置索引,從列表左側進行編號的話是從 0 開始的,從右邊進行編號的話,是從 -1 開始的。我們可以使用 list_name[index]

的方式來訪問列表中某一項的值

lang = ['Python', 'C#', 'R', 'Java', 'PHP']
s = lang[0] # 索引為0的項
print(s)
print(lang[2])  # 索引為2的項
s1 = lang[-1]  # 訪問最後一項
print(s1)
2.3 修改列表中的值

列表定義完後,如修改裡面某項的值,可以使用 list_name[index] = newvalue 的形式來完成

like_fruits = ['apple', 'pear', 'banana', 'orange']
print(f'更新前的值:{like_fruits}')
like_fruits[
1] = 'berry' # 修改索引為1處的值 print(f'更新前的值:{like_fruits}') like_fruits[-1] = 'mango' # 修改索引為-1處(最後一個)的值 print(f'更新末尾的值:{like_fruits}')

輸出:

更新前的值:['apple', 'pear', 'banana', 'orange']
更新前的值:['apple', 'berry', 'banana', 'orange']
更新末尾的值:['apple', 'berry', 'banana', 'mango']
2.4 刪除列表中的一項
# 定義一個顏色列表
list_colors = ['Red', 'Blue', 'Black', 'White', 'Pink', 'Green', 'Gray']
print('原列表:', list_colors)

# 使用 remove 刪除指定值的列表項
list_colors.remove('Green')
print('使用remove刪除\'Green\'後:', list_colors)

# 使用 del 刪除指定索引處的列表項
del list_colors[2]         
print('使用del刪除索引2處的項後:', list_colors)

# 使用pop方法移除指定索引處的項
list_colors.pop(3)         
print('使用pop方法刪除索引3處的項後:', list_colors)

輸出:

原列表: ['Red', 'Blue', 'Black', 'White', 'Pink', 'Green', 'Gray']
使用remove刪除'Green'後: ['Red', 'Blue', 'Black', 'White', 'Pink', 'Gray']
使用del刪除索引2處的項後: ['Red', 'Blue', 'White', 'Pink', 'Gray']
使用pop方法刪除索引3處的項後: ['Red', 'Blue', 'White', 'Gray']

注意上面使用Remove方法來刪除列表中的項時,只能使用具體的值來刪除,不能使用索引,並且要刪除的值必須在列表中存在,否則會報錯。使用pop時只能使用索引,不能使用值來刪除。

Python中的 del 不僅能刪除列表中的某一項,還能將整個列表進行刪除

2.5 巢狀列表

列表中又包含列表,稱之為巢狀列表。/作業4中有體現/

3. 作業

3.1 作業1

題目:現在有 a = [1,2,3,4,5,6] 用多種方式實現列表的反轉([6,5,4,3,2,1]) 並寫出推導過程

a = [1, 2, 3, 4, 5, 6]
print(a[::-1])              # 第一種方法
print(a[-1::-1])            # 第二種方法

new_a = []                  # 第三種方法,使用pop()方法先取列表中最後一個元素傳遞給新列表
for i in range(len(a)):
     b = a.pop()
     new_a.append(b)
print(new_a)

a.reverse()                # 第四種方法,使用reverse()方法,永久性反轉
print(a)

new_b = []                  # 第五種方法,使用insert()方法,把原列表元素在新列表中依次傳遞進去,得到的新列表就為倒序
for i in a:
    new_b.insert(0, i)
print(new_b)

b = list(reversed(a))        # 第六種方法,使用reversed()方法,臨時性反轉列表
print(b)

c = list(sorted(a, reverse=True))   # 第七種方法,使用sorted()方法,使用引數reverse,臨時性反轉
print(c)
3.2 作業2

題目:給使用者9次機會 猜1 - 10 個數字隨機來猜數字。如果隨機的數字和使用者輸入的數字一致則表示正確,
如果不一致則表示錯誤。最終結果要求使用者怎麼也猜不對

import random

i = 1
print("您一共有9次機會猜數字")
while i < 10:
    computer = random.randint(1, 10)
    player = int(input("請輸入1~10之間的數字來猜數字:"))
    if player == computer:
        print(f'電腦是{computer + 1}')
        print(f"您沒猜中,還有{9-i}次機會")
        i += 1
    else:
        print(f'電腦是{computer}')
        print(f"您沒猜中,還有{9-i}次機會")
        i += 1
3.3 作業3

題目:有兩個列表 lst1 = [11, 22, 33] lst2 = [22, 33, 44]獲取內容相同的元素

lst1 = [11, 22, 33]
lst2 = [22, 33, 44]
lst_same = []
for i in lst1:
    for j in lst2:
        if j == i:
            lst_same.append(j)
print(lst_same)
3.4 作業4

題目:現在有8位老師,3個辦公室,要求將8位老師隨機的分配到三個辦公室中

import random
teacher = ['張', '王', '李', '趙', '宋', '歐陽', '吳', '郭']
offices = [[], [], []]     # 建立一個辦公室二維空列表
for i in teacher:          # 對offices列表內每一個內列表隨機傳遞元素
    offices[random.randint(0, 2)].append(i)  # 每一次迴圈teacher列表元素不一定傳入offices[0]或offices[1]或offices[2]中
print(offices)

輸出:列舉了6次結果

[['張', '李'], ['趙', '歐陽'], ['王', '宋', '吳', '郭']]
[['李', '歐陽', '吳'], ['張', '宋'], ['王', '趙', '郭']]
[['張', '王', '李', '趙', '歐陽', '吳'], [], ['宋', '郭']]
[[], ['王', '歐陽', '吳'], ['張', '李', '趙', '宋', '郭']]
[['張', '宋', '吳'], ['趙', '歐陽'], ['王', '李', '郭']]
[['宋', '歐陽'], ['李', '趙'], ['張', '王', '吳', '郭']]