Python基礎語法小結2(列表)
阿新 • • 發佈:2021-01-28
技術標籤: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次結果
[['張', '李'], ['趙', '歐陽'], ['王', '宋', '吳', '郭']]
[['李', '歐陽', '吳'], ['張', '宋'], ['王', '趙', '郭']]
[['張', '王', '李', '趙', '歐陽', '吳'], [], ['宋', '郭']]
[[], ['王', '歐陽', '吳'], ['張', '李', '趙', '宋', '郭']]
[['張', '宋', '吳'], ['趙', '歐陽'], ['王', '李', '郭']]
[['宋', '歐陽'], ['李', '趙'], ['張', '王', '吳', '郭']]