Dlaczego problem nie występuje całkowicie na boku?
def square(vals):
return [v*v for v in vals]
Edit: Pierwszym problemem, jak kilka osób podkreśliło, że jesteś zwarcie swoją pętlę for
. Twój return
powinien pochodzić z pętli, a nie w niej.
Następnym problemem jest korzystanie z list.append
- należy do niego zadzwonić, a nie przypisać do niego, tj. result.append(y*y)
. result.append = y*y
zamiast tego nadpisuje metodę wartością numeryczną, prawdopodobnie powodując błąd przy następnej próbie wywołania.
Po naprawić, można znaleźć innego mniej oczywisty błąd występuje, jeśli zadzwonisz czynność wielokrotnie:
print(square([1,2,3]) # => [1, 4, 9]
print(square([1,2,3]) # => [1, 4, 9, 1, 4, 9]
Bo zdać zmienny element (lista) jako domyślny, wszystkie dalsze stosowanie tego Domyślna pozycja wskazuje na tę samą oryginalną listę.
Zamiast próbować
def square(vals, result=None):
if result is None:
result = []
result.extend(v*v for v in vals)
return result
1. Nie zmieniaj domyślnych argumentów. 2. Możesz "zwrócić" tylko raz. – jonrsharpe
Następnie w jaki sposób mogę zwrócić tablicę jako dane wyjściowe. Czy możesz dać mi jakiś pomysł? Dziękujemy –
Przenieś wyjście z pętli for. –