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
1 Asked on January 5, 2021 by collob
0 Asked on January 5, 2021
c %d0%b3%d1%80%d0%b0%d1%84%d0%b8%d0%ba%d0%b0 %d0%bc%d0%b0%d1%81%d1%81%d0%b8%d0%b2%d1%8b %d1%81%d0%ba%d1%80%d0%b8%d0%bd%d1%88%d0%be%d1%82
0 Asked on January 4, 2021 by zeni1agent
1 Asked on January 4, 2021
1 Asked on January 4, 2021 by homie
1 Asked on January 4, 2021 by blck4
1 Asked on January 3, 2021 by konstantin
1 Asked on January 3, 2021 by kunoichi
collation sql sql server %d0%b1%d0%b0%d0%b7%d0%b0 %d0%b4%d0%b0%d0%bd%d0%bd%d1%8b%d1%85
1 Asked on January 3, 2021 by helen
%d0%b1%d0%b0%d0%b7%d0%b0 %d0%b4%d0%b0%d0%bd%d0%bd%d1%8b%d1%85 %d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be%d1%81%d1%82%d1%8c
0 Asked on January 3, 2021 by hazcker
0 Asked on January 3, 2021
Get help from others!
Recent Questions
Recent Answers
© 2023 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP