Check if an element is present within a linked list - follow up
The construct

for i in range(0, len(seq)):
    node = Node(seq[i])


is usually frowned upon. Consider a Pythonic

for item in seq:
    node = Node(item)

I see no reason to default seq to None.
append does not append. It prepends.
remove has an unpleasant code duplication. To avoid special casing the head, consider using a dummy node:

def remove(self, item):
    dummy = Node(None, self.head)
    prev = dummy
    while prev.next:
        if prev.next.data == item:
            prev.next = prev.next.next
            size -= 1
        prev = prev.next
    self.head = dummy.next

printdata may (or shall?) use the iterator:

def printdata(self):
    for node in self:
        print node.data