2016-05-28 17 views
-3

Wenn ich eine Liste von Tupeln haben und ich versuche, den Typ für jedes der Elemente der Liste in einer Funktion, die ich dieses VerhaltenWired Verhalten Auswertung Tupel

In [348]:def f2(x): 
      if x[0]==tuple: 
       return True 
      else: 
       return False 


In [349]:w=[(0,1)] 

In [350]:f2(w) 
Out[350]: False 

sehen zu bewerten, aber wenn ich die Elemente bewerten indvidually ich bekomme das erwartete Ergebnis

In [351]:type(w[0])==tuple 
Out[351]: True 
+3

vergessen Sie 'Baumuster zur in Ihrer Funktion gibt. Es ist wichtig. Ich würde auch empfehlen, 'isinstance' zu ​​verwenden. – miradulo

+0

Ihre Funktion gibt einen booleschen Wert, wahr oder falsch zurück. Es gibt keinen Typ zurück. – roadrunner66

+0

@DonkeyKong danke. Ich habe zu lange auf den Bildschirm geschaut. – mikeL

Antwort

1

Sie haben vergessen type im if Zustand zu nennen:

def f2(x): 
    if type(x[0])==tuple: 
     return True 
    else: 
     return False 

Beachten Sie, dass jedoch, da jeder Zweig des if-else nur boolean zurückgibt, können Sie es vollständig entfernen und zurückgeben kann nur die Einschätzung der Bedingung:

def f2(x): 
    return type(x[0])==tuple 
+0

Die Verwendung von 'type' ist im Allgemeinen nicht sinnvoll. Lieber 'isinstance' bevorzugen. –