引言
本章主要介紹列表在實際應用中的使用場景,多維列表(巢狀列表)
如果你需要在列表儲存每個人員的一些基本資訊,使用列表巢狀來儲存這種資訊是個不錯的主意。
多維列表
列表可以根據實際情況巢狀使用,比如你想儲存兩個人的資訊,可使用如下方式
[ ['人員1' , '年齡' , '工資'] , [人員2] , [年齡] ,[工資] ... ]
以上多維列表可以很方便的儲存每個人的資訊,每個索引號對應一個人
巢狀列表使用
將使用者錄入的字串資訊以特定格式分割成列表儲存起來,巢狀到人員列表中
-
定義一個存放人員資訊的列表
emp_lost = []
-
使用
split()
將字串分割成列表存到人員列表中emp_list = [] # 存放人員資訊列表 info = input("請錄入員工資訊(逗號分隔):") # 使用者輸入字串 info_list = info.split(",") # 將字元創分隔成列表 emp_list.append(info_list) # 將列表追加到人員列表 print(emp_list) # 列印人員列表 # 執行結果: ''' 請錄入員工資訊(逗號分隔):張三,22,6000 [['張三', '22', '6000']] '''
現在已經可以使用巢狀列表了,但實際情況往往不止錄入一組員工資訊,可能是N組
錄入多組人員資訊
讓使用者可以錄入多組人員資訊
使用迴圈
emp_list = []
while True: # while 條件為 True 時會一直執行(死迴圈)
info = input("請錄入員工資訊(逗號分隔):")
if info == "": # 判斷是否錄入資訊
print("沒有錄入資訊,程式退出") # 給使用者提示
break # 中斷退出迴圈
# 如果使用者錄入資訊,繼續執行以下程式碼
info_list = info.split(",") # 將使用者錄入的字串按照逗號分割成列表
emp_list.append(info_list) # 把員工資訊存入到列表中
print(emp_list) # 列印人員列表
# 執行結果:
'''
請錄入員工資訊(逗號分隔):張三,22,5000
請錄入員工資訊(逗號分隔):李四,23,6000
請錄入員工資訊(逗號分隔):王五,24,7000
請錄入員工資訊(逗號分隔):
沒有錄入資訊,程式退出
[['張三', '22', '5000'], ['李四', '23', '6000'], ['王五', '24', '7000']]
'''
以上示例已經可以讓使用者一直錄入員工資訊了,但是卻不是完善的,因為使用者可以隨便錄入幾個資訊都行,即使只錄入一個名稱也儲存
判斷錄入格式
這裡假設使用者需要錄入三個資訊才是格式正確,“姓名、年齡、工資”
如果錄入少了或超過了都是不正確的格式
emp_list = []
while True:
info = input("請錄入員工資訊(逗號分隔):")
if info == "":
print("沒有錄入資訊,程式退出")
break
info_list = info.split(",")
if len(info_list) != 3: # 判斷錄入資訊是否為三個元素
print("錄入格式不正確,請重新錄入!") # 提示格式不正確
continue # 跳過以下程式碼,重新執行迴圈
emp_list.append(info_list)
print(emp_list) # 退出列印員工列表
# 執行結果:
'''
請錄入員工資訊(逗號分隔):張三,22,5000
請錄入員工資訊(逗號分隔):李四,23
錄入格式不正確,請重新錄入!
請錄入員工資訊(逗號分隔):李四,23,6000
請錄入員工資訊(逗號分隔):
沒有錄入資訊,程式退出
[['張三', '22', '5000'], ['李四', '23', '6000']]
'''
以上示例控制了使用者輸入的格式
格式化輸出
以上示例中已經可以成功錄入資訊並且有控制使用者錄入的地方了,但是輸出的格式卻不盡人意,下面就解決這個問題
emp_list = []
while True:
info = input("請錄入員工資訊(逗號分隔):")
if info == "":
print("沒有錄入資訊,程式退出")
break
info_list = info.split(",")
if len(info_list) != 3:
print("錄入格式不正確,請重新錄入!")
continue
emp_list.append(info_list)
for emp in emp_list:
emp_info = "姓名:{n} \t 年齡:{a} \t 工資:{s}".format( n=emp[0] , a=emp[1] , s=emp[2]) # 將格式化的資訊儲存到 emp_info 變數中
print(emp_info) # 列印格式化後的人員資訊
# 執行結果:
'''
請錄入員工資訊(逗號分隔):張三,22,5000
請錄入員工資訊(逗號分隔):李四,23,6000
請錄入員工資訊(逗號分隔):王五,24,7000
請錄入員工資訊(逗號分隔):
沒有錄入資訊,程式退出
姓名:張三 年齡:22 工資:5000
姓名:李四 年齡:23 工資:6000
姓名:王五 年齡:24 工資:7000
'''
本次演示程式的完整程式碼
上面使用到的 format()
方法為格式化函式,官方文件:
https://docs.python.org/3/library/string.h...