2017-02-21 2 views
0

Je suis censé utiliser le modèle de carte pour créer une liste de résultats qui place les nombres dans la liste d'entrée.Comment obtenir le modèle de carte pour renvoyer correctement une liste de carrés d'une fonction?

def square_all(list1): 
    list1 = [] 
    squared = map(lambda x: x**2, list1) 
    return squared 

Je croyais avoir compris la carte syntaxe de modèle, mais quand je lance mes cas de test pour la fonction qu'il continue de me dire que ma fonction retourne une liste vide et je ne sais pas pourquoi.

import unittest 
import map 
import point 

class TestCases(unittest.TestCase): 
    def test_1(self): 
     nums = [2,3,4] 
     self.assertEqual(map.square_all(nums), [4,9,16]) 



if __name__ == '__main__': 
    unittest.main() 
+0

Êtes-vous sur Python 3? 'map' ne retourne pas une liste sur Python 3. – user2357112

+3

l'indentation de la fonction est incorrecte. Aussi, vous devez supprimer 'list1 = []' –

+3

Aussi, n'appelez pas vos modules 'map'. – user2357112

Répondre

3

Vous initialisez list1=[], supprimer ce et il travaillera

def square_all(list1): 
    squared = map(lambda x: x**2, list1) 
    return squared 

Si vous voulez faire cela en utilisant pour la boucle:

def square_all(list1): 
    squared=[] 
    for x in list1: 
     squared.append(x**2) 
    return squared 
+0

savez-vous comment je pourrais le faire en utilisant une boucle for? – theow

+0

a mis à jour sa réponse –