python实现:删除链表中等于给定值val的所有节点.求代码学习

例如:给出链表 1->2->3->3->4->5->3, 和 val = 3, 需要返回删除3之后的链表:1->2->4->5。

python怎么考虑链表,是用类来实现链表节点吗?
如果不是,就简单了。
def remove(arr): #arr=[1,2,3,3,4,5,3]
arr_len = len(arr)
for i in range(0,arr_len):
try:
arr.remove(3)
except ValueError:
return arr
return arr

·newlist = [x for x in oldlist if not x == val];·,其中oldlist为原来的list,newlist为删除元素后得到的list,val为待删除的元素

#这个代码考虑到了删除head和删除中间位置节点元素的不同情况
#同时考虑到了一个链表中重复出现该定值的情况
def remove(self,item):
current = self.head
previous = None
i = 0
print(SList.size(self))
while i < SList.size(self):
print(current.getData())
if current.getData() == item:
if previous == None: # 假如第一个节点就是要删的节点
self.head = current.getNext() # 表头指向current的下一个节点
previous = None
current = current.getNext()
else:
previous.setNext(current.getNext()) # 链跳过要删的节点
current = previous.getNext()
print('已删除')
else:
previous = current
current = current.getNext()
i += 1
print('删除执行完毕')