<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def select(self, *column_or_columns):
 """Return a table with only the columns in ``column_or_columns``. Args: ``column_or_columns``: Columns to select from the ``Table`` as either column labels (``str``) or column indices (``int``). Returns: A new instance of ``Table`` containing only selected columns. The columns of the new ``Table`` are in the order given in ``column_or_columns``. Raises: ``KeyError`` if any of ``column_or_columns`` are not in the table. Number of petals | Name | Weight 8 | lotus | 10 34 | sunflower | 5 5 | rose | 6 Number of petals | Weight 8 | 10 34 | 5 5 | 6 Number of petals | Name | Weight 8 | lotus | 10 34 | sunflower | 5 5 | rose | 6 Number of petals | Weight 8 | 10 34 | 5 5 | 6 """

        labels = self._varargs_as_labels(column_or_columns)
        table = type(self)()
        for label in labels:
            self._add_column_and_format(table, label, np.copy(self[label]))
        return table