iT邦幫忙

0

python class實體物件的搜尋與刪除

請問

  1. 我用一個list存了一個班級的學生資料(實體物件) 我要怎麼找特定英文成績且特定數學成績的學生資料(物件)

  2. 如上題,我想把這個學生資料完全消除 該如何撰寫呢?

  3. 我想要按照英文成績排列學生,該怎麼sort比較好?

p.s也不一定要用list存,我自學不確定是不是用list比較好
ex.
class student:
name,en,math.....

data=[]
for
{
data.append(student(eric,92,90))

}

1
froce
iT邦大師 1 級 ‧ 2020-08-30 19:21:16
class Student:
    def __init__(self, name: str, en: int, math: int):
        self.name = name
        self.en = en
        self.math = math
    
    def __str__(self):
        return self.name
        
s1 = Student("s1", 50, 80)
s2 = Student("s2", 60, 80)
s3 = Student("s3", 50, 50)
s4 = Student("s4", 50, 80)

students = [s1, s2, s3, s4]
filtered_students = [x for x in students if x.en == 50 and x.math == 80]
print(students, filtered_students)
kim85109 iT邦新手 5 級 ‧ 2020-08-30 19:31:55 檢舉

那請問,怎麼刪除呢? 因為會長久運行增加資料,需要把舊的不需要資料刪除
另外,如果要按照英文成績排列的話怎麼寫呢? 謝謝~~~

froce iT邦大師 1 級 ‧ 2020-08-30 21:06:06 檢舉

我以為你是要練習而已。
如果是真的有資料要運作,那就建議接資料庫,用ORM去做很容易。
https://www.sqlalchemy.org/
都可以直接有api去做query。

kim85109 iT邦新手 5 級 ‧ 2020-08-30 21:06:47 檢舉

想寫個discord 機器人

0
詹姆士
iT邦新手 5 級 ‧ 2020-08-30 20:14:24

Python list 物件提供以下幾種刪除 list 元素的內建方法,或者、指令 :

  1. pop(position) # 取出某位置所在的元素, 該位置的元素會被自list中移除
  2. pop() # 取出list最末尾位置所在的元素
  3. remove(value) # 移除list符合value值的第一個元素
    注意: 只移除1筆, 即使有多筆元素值都等於value
    建議要搭配撰寫 try ... except ValueError
    因為,如果找不到 value 會抛出 Exception
  4. clear() # 清空整個list, 該list物件仍然存在 ! 成為一個空串列
  5. del(position) # 移除某位置所在的元素
  6. del(slice) # 移除某位置範圍所在的多個元素
  7. del list_object # 刪除整個list物件, 該list物件將不再存在 !

想要按照英文成績排列學生:
參考 class Student: 的設計,請嚐試:
def myFunc(e):
return e.en # 學生物件的英文成綪

Syntax:
list.sort(reverse=True|False, key=myFunc) # reverse=True 遞減排列,
# reverse=False(預設) 遞增排列

kim85109 iT邦新手 5 級 ‧ 2020-08-30 21:38:16 檢舉

我試試看

0
一級屠豬士
iT邦大師 1 級 ‧ 2020-08-30 20:28:21

有另外的資料結構 dict, 也許你可以搭配使用

https://docs.python.org/zh-tw/3/tutorial/datastructures.html#dictionaries

隨手找到之前有邦友發表的文章
https://ithelp.ithome.com.tw/articles/10191479

另外回答你的 " 因為會長久運行增加資料,需要把舊的不需要資料刪除 "
僅是我個人觀點.目前常見的大量資料的處理,會以使用資料庫,搭配程式語言來做.
畢竟儲存,管理維護資料,資料庫會比程式人員自己重新造輪子,還要方便.

看更多先前的回應...收起先前的回應...
kim85109 iT邦新手 5 級 ‧ 2020-08-30 21:06:16 檢舉

是一個dict存一位學生嗎?這樣一樣是用list存學生名單嗎?
另外我只是想寫一個Discord機器人,讓他存點資料,但怕資料不清除,機器人會掛掉。所以應該不用用到大量資料的處理、使用資料庫。
謝謝~~

froce iT邦大師 1 級 ‧ 2020-08-30 21:12:30 檢舉

你怕資料不清除、機器人會掛掉...
你不怕停電整個掛掉嗎?

一個實際營運項目,持久化資料是必要的,資料庫是你最簡單的選擇之一。
害怕多學習不可能搞出什麼好東西來的。

kim85109 iT邦新手 5 級 ‧ 2020-08-30 21:38:05 檢舉

好我研究研究

kim85109 iT邦新手 5 級 ‧ 2020-08-30 22:11:03 檢舉

停電到不至於,因為會代理伺服器用,資料也不是多重要,時效性大概也藉1-3小時以內

我要發表回答

立即登入回答