Python . Funckje reduce

0

Cześć,

Przykładowo mam

x = [1,2,3] , y = [4,5,6]

Chciałbym zrobić coś w stylu:

(x[0]-y[0])**2  + (x[1]-y[1])**2 + (x[2]-y[2])**2

Czy można to zrobić przy pomocy funkcji typu map / reduce , żeby nie robić pętli for ?

0

Tak:

reduce(lambda a,b: a + b, [(a + b)**2 for a, b in zip(x,y)])

Zauważ, że [(a + b)**2 for a, b in zip(x,y)] to to samo co map(lambda a,b: (a+b)**2, zip(x,y), a nie pętla.

Jakoś tak, mogą być małe błędy bo nie znam Pythona aż tak.

0

Zamiast map i lambd (które są niezalecane) lepiej użyć generatorów:

xs, ys = [1,2,3], [4,5,6]
sum((x - y) ** 2 for x, y in zip(xs, ys))
0

Dzięki, i przy okazji mam jeszcze jedno pytanie. W Pythonie musiałem utworzyć plik .jpeg , który był jest potrzebny w programie, ale po zakończeniu działania jest on niepotrzebny. W jaki sposób możnaby go usunąć ?

0

a pyton nie ma garbage collectora przypadkiem?:>

0

a pyton nie ma garbage collectora przypadkiem?:>

Pyton ma, system plików niekoniecznie (mowa o usunięciu pliku tymczasowego).

Ad pytanie:

os.remove(path)

Remove (delete) the file path. If path is a directory, OSError is raised; see rmdir() below to remove a directory. This is identical to the unlink() function documented below. On Windows, attempting to remove a file that is in use causes an exception to be raised; on Unix, the directory entry is removed but the storage allocated to the file is not made available until the original file is no longer in use.

1 użytkowników online, w tym zalogowanych: 0, gości: 1