python dynamic - TypeError:l'objet 'list' n'est pas appelable en essayant d'accéder à une liste




plot title (7)

J'essaie d'exécuter ce code où j'ai une liste de listes. Je dois ajouter aux listes internes, mais je reçois l'erreur

TypeError: 'list' object is not callable.

Quelqu'un peut-il me dire ce que je fais mal ici.

def createlists():
    global maxchar
    global minchar
    global worddict
    global wordlists

    for i in range(minchar, maxchar + 1):
        wordlists.insert(i, list())
    #add data to list now
    for words in worddict.keys():
        print words
        print  wordlists(len(words)) # <--- Error here.
        (wordlists(len(words))).append(words)  # <-- Error here too
        print "adding word " + words + " at " + str(wordlists(len(words)))
    print wordlists(5)

Answers

Vous essayez d'appeler des wordlists ici:

print  wordlists(len(words)) <--- Error here.

Essayer:

print wordlists[len(words)]

Pour obtenir des éléments d'une liste, vous devez utiliser list[i] au lieu de list(i) .


Vérifiez votre nom de fichier dans lequel vous avez enregistré votre programme. Si le nom de fichier est une liste de wordlists vous obtiendrez une erreur. Votre nom de fichier ne doit pas être identique aux méthodes {fonctions} que vous utilisez dans votre programme.


Essayez les wordlists[len(words)] . () est un appel de fonction. Quand vous faites des wordlists(..) , python pense que vous appelez une fonction appelée wordlists qui s'avère être une list . D'où l'erreur.


Pour accéder aux éléments d'une liste, vous devez utiliser les crochets ( [] ) et non les parenthèses ( () ).

Au lieu de:

print  wordlists(len(words))

vous devez utiliser:

print worldlists[len(words)]

Et au lieu de:

(wordlists(len(words))).append(words)

vous devez utiliser:

worldlists[len(words)].append(words)

Les listes de mots ne sont pas une fonction, c'est une liste. Vous avez besoin de l'indice de parenthèse

print  wordlists[len(words)]

Pour vérifier la fonction ou la méthode de la classe est appelable ou non, cela signifie que nous pouvons appeler cette fonction.

Class A:
    def __init__(self,val):
        self.val = val
    def bar(self):
        print "bar"

obj = A()      
callable(obj.bar)
True
callable(obj.__init___)
False
def foo(): return "s"
callable(foo)
True
callable(foo())
False




python callable