Python . Funckje reduce

SK
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 7 lat
  • Postów:80
0

Cześć,

Przykładowo mam

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

Chciałbym zrobić coś w stylu:

Kopiuj
(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 ?

edytowany 1x, ostatnio: skolukmar
hauleth
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:6 dni
0

Tak:

Kopiuj
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.


edytowany 3x, ostatnio: hauleth
0

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

Kopiuj
xs, ys = [1,2,3], [4,5,6]
sum((x - y) ** 2 for x, y in zip(xs, ys))
SK
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 7 lat
  • Postów:80
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?:>

msm
Administrator
  • Rejestracja:około 16 lat
  • Ostatnio:6 miesięcy
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.