2013-05-22 2 views
-3
class database(object): 
    def __init__(self): 
     self.l = [] 


    def insert(self, e): 
     for i in range[len(self.l)]: 
      if i == e: return 
     self.l.append(e) 

Почему вставка, дающая мне несвязанный метод, может кто-то помочь?Помогите мне с этим классом

+3

'range [len (self.l)]' должен быть 'range (len (self.l))'. Это устраняет проблему? – TerryA

+1

@ Хайдо Сделайте ответ. –

+0

@ Хайдо получил смысл, но Python не вызывает исключение исключенного метода. Возможно, он вызывает метод без инициализации объекта. – Markon

ответ

2

Причина в том, из-за вашей опечатка:

range[len(self.l)] 

Должно быть

range(len(self.l)) 

Вы можете использовать круглые скобки () для вызова функций. Кронштейны [] используются для списков и других функций, таких как нарезка.

3

Вам не нужна петля там, вы можете просто сделать это:

def insert(self, e): 
    if e not in self.l: 
     self.l.append(e) 

Или, если вы просто хотите, чтобы убедиться, что там нет дубликатов; используйте set, который является неупорядоченным коллекция уникальных предметов; и у вас не может быть дубликатов:

>>> s = set() 
>>> s.add(1) 
>>> s.add(2) 
>>> s.add(1) # Note, no error message on duplicate 
>>> s.add(4) 
>>> s 
set([1, 2, 4]) 
Смежные вопросы