看板 Python 關於我們 聯絡資訊
※ 引述《unfinish (笑吟吟的淫淫笑)》之銘言: : 最近也在自學python 也有關於append的問題 : 想問一下 : 1.這種列表裡頭包列表的套娃式架構用途是什麼? 這問題沒有什麼標準答案啊,當你有一群適合用 list 來管理的物件,這群物件 各自又擁有適合用 list 來管理的元素,自然就會這麼使用啦。 例如說,班上有 n 位同學,我們要調查並儲存這 n 位同學家中有哪些成員。 families = [ ["爸爸", "媽媽"], ["爸爸", "媽媽", "哥哥", "妹妹"], ["爺爺", "爸爸", "媽媽", "弟弟"], ["媽媽"] ] n 位同學看來很容易用 list 來存取,以 (學號 - 1) 當第一層 index。而家中 成員就單純要列舉而已,所以也可以用 list 來存,自然就可以這麼用。 : 2.要怎麼直接調用列表裡的列表值? 以上為例,如果我們要存取學號 3 號的同學家中的第 2 個成員: print(families[2][1]) # 從 0 開始所以不是取[3][2]而是[2][1],"爸爸" 但是你會注意到,不是每個同學都有兩個以上家人。4 號同學你取第 2 個家人 ,自然就會出問題了。這個時候我們就要考慮: 1. 這麼存可以做到什麼? 2. 如果這麼存做不到(或效率不好)想做的事該怎麼修改? 像 list 的特性就是用 index 直接存取,超出長度會爛掉。也就是說在不能確 定每個內層長度相同的情況下,直接取內層的固定 index 也許就不是好用途,應該 換成 list 以外的儲存方式,例如 set 或 dict 之類。 那什麼用途比較有用? 例如內層是固定個數或有最小個數,所以取某個範圍內的 index 不會取不到。 或者有特殊順序,比如 index 0 一定要填上監護人,所以取 families[x][0] 一定 能取到值。 或是一開始說的,內層就單純要列舉而已,沒有要對內層取 index: for id in range(len(families)): print(f"同學 {id + 1} 的家族成員:") print(families[id]) # 直接印出每一個同學的家人列表 for member in families[id]: print(f"同學 {id + 1} 有 {member}") # 也是列出同學的家人列表, # 但是一個一個列 或是對內層有無關列表長度的運算: for id in range(len(families)): if "妹妹" not in families[id]: print(f"同學 {id + 1} 醒醒吧,你沒有妹妹") : 所以...要怎麼做才能直接調用? : 請各位大大指教,謝謝~ -- 「珍貴的回憶?還不是跟夢一樣虛幻不實的東西?你想要什麼樣的回憶,我幫你 做出來啦!」 --艾蜜思,謊言事務所實現使者 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.32.17.60 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1649407899.A.53A.html ※ 編輯: ddavid (114.32.17.60 臺灣), 04/08/2022 16:53:44