Stack Overflow на русском Asked on October 30, 2020
Столкнулся с задачей: есть список комплексных чисес vertexes = [v0, v1, ..., vn]
, необходимо получить список distances = [d0, d1, ..., ]
, причём distances[i] = abs(vertexes[i + 1] - vertexes[i])
Например, vertexes = [1 + 0j, 3 + 0j, 3 + 4j, 6 + 8j] => distances = [2, 4, 5]
Моё решение:
import functools
def calculate_distances(vertexes):
distances = []
functools.reduce(lambda a, b: distances.append(abs(b - a)) or b, vertexes)
return distances
vertexes = [1 + 0j, 3 + 0j, 3 + 4j, 6 + 8j]
distances = calculate_distances(vertexes)
print(distances)
# Out: [2.0, 4.0, 5.0]
Стоит ли писать такой код? Может есть решение изящнее или правильнее или (изящнее и правильнее)? После такого у меня остаётся ужасное послевкусие костыльности. Так ли это на самом деле?
Ну я бы вообще вот так написал:
distances = [abs(b - a) for b,a in zip(vertexes[1:],vertexes)]
Correct answer by CrazyElf on October 30, 2020
Я бы так делал:
import itertools
def pairwise(iterable):
a, b = itertools.tee(iterable)
next(b, None)
return zip(a, b)
def calculate_distances(vertexes):
return [abs(b - a) for a, b in pairwise(vertexes)]
vertexes = [1 + 0j, 3 + 0j, 3 + 4j, 6 + 8j]
distances = calculate_distances(vertexes)
print(distances)
Answered by dIm0n on October 30, 2020
2 Asked on February 4, 2021
2 Asked on February 4, 2021 by little_ray
0 Asked on February 4, 2021
bit c %d0%b1%d0%b8%d1%82%d0%be%d0%b2%d1%8b%d0%b5 %d0%be%d0%bf%d0%b5%d1%80%d0%b0%d1%86%d0%b8%d0%b8
1 Asked on February 4, 2021 by kingkoval
android java permissions %d0%b3%d0%b5%d0%be%d0%bb%d0%be%d0%ba%d0%b0%d1%86%d0%b8%d1%8f
0 Asked on February 4, 2021 by d-socolov
java linux %d1%84%d0%b0%d0%b9%d0%bb%d0%be%d0%b2%d0%b0%d1%8f %d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc%d0%b0 %d1%84%d0%b0%d0%b9%d0%bb%d1%8b
0 Asked on February 3, 2021 by user423190
1 Asked on February 3, 2021 by junior
1 Asked on February 3, 2021
0 Asked on February 3, 2021 by alex-rodionow
1 Asked on February 3, 2021 by sanlover
c %d0%b1%d0%b8%d1%82%d0%be%d0%b2%d1%8b%d0%b5 %d0%be%d0%bf%d0%b5%d1%80%d0%b0%d1%86%d0%b8%d0%b8 %d1%82%d0%b8%d0%bf%d1%8b %d0%b4%d0%b0%d0%bd%d0%bd%d1%8b%d1%85
0 Asked on February 3, 2021
arduino c %d0%b4%d0%b8%d0%bd%d0%b0%d0%bc%d0%b8%d1%87%d0%b5%d1%81%d0%ba%d0%b8%d0%b5 %d0%bc%d0%b0%d1%81%d1%81%d0%b8%d0%b2%d1%8b
2 Asked on February 3, 2021 by g1shy
0 Asked on February 2, 2021 by antos_359
1 Asked on February 2, 2021 by asdfjsldfksjdsdjklas
c %d0%be%d0%bb%d0%b8%d0%bc%d0%bf%d0%b8%d0%b0%d0%b4%d0%b0 %d1%87%d0%b8%d1%81%d0%bb%d0%b0 %d1%84%d0%b8%d0%b1%d0%be%d0%bd%d0%b0%d1%87%d1%87%d0%b8
1 Asked on February 2, 2021 by aleksey-bolgov
2 Asked on February 2, 2021 by qwertiy
Get help from others!
Recent Questions
Recent Answers
© 2022 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, MenuIva, UKBizDB, Menu Kuliner, Sharing RPP