<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def buildDPList(self):
 """Builds list of data products."""

        updated = False
        dps = []
        itemlist = self.getItemDPList()
        # first remove all items marked for removal, in case their names clash with new or renamed items
        for item, dp in itemlist:
            item._policy = item._combobox_current_value[self.ColAction]
            if dp and item._policy == "remove":
                dp.remove_file()
                dp.remove_subproducts()
        # now, make list
        for item, dp in itemlist:
            if item._policy == "remove":
                continue
            # update renderer and comment
            render = item._combobox_current_value[self.ColRender]
            comment = str(item.text(self.ColComment))
            if render != dp.render:
                dp.render = render
                updated = True
            if comment != dp.comment:
                dp.comment = comment
                updated = True
            # archived DPs may need to be renamed, for new ones simply set the name
            if dp.archived:
                updated = updated or dp.rename(str(item.text(self.ColRename)))
            else:
                dp.set_policy(item._policy)
                dp.filename = str(item.text(self.ColRename))
            dps.append(dp)
        return dps, updated