Я хочу, чтобы python делал что-то похожее на MS Excel =ROUNDDOWN (number, num_digits)
. Так что в моем примере, который выглядит так
a = [3.5, 43.689, 113.225, 65.4545]
Я пробовал вот так:
a = [3.5, 43.689, 113.225, 65.4545]
b = [str(i).split(".") for i in a]
c = [i[0] for i in b]
d = [i[1][0] for i in b]
e = list(zip(c,d))
f = [float(".".join(i)) for i in e]
Который дал выход мне нужно:
>>> print (f)
[3.5, 43.6, 113.2, 65.4]
Есть ли лучший и самый простой способ сделать это в Python?
4 ответа
int
округляет до нуля, если это то, что вы хотите:
a = [3.5, 43.689, 113.225, 65.4545]
[int(x * 10) / 10 for x in a]
Выход:
[3.5, 43.6, 113.2, 65.4]
Я думаю, что вы могли бы использовать круглое выражение:
>>> a = [3.5, 43.689, 113.225, 65.4545]
>>> [float(Decimal(b).quantize(decimal.Decimal('.0'), rounding=decimal.ROUND_DOWN)) for b in a]
[3.5, 43.6, 113.2, 65.4]
Надеюсь, это вам поможет;)
Я думаю, что это более Pythonic способ:
from decimal import Decimal, ROUND_DOWN
Decimal(65.4545).quantize(Decimal('.0'), rounding=ROUND_DOWN)
Так же, как вы почти:
a = [3.5, 43.689, 113.225, 65.4545]
f = [float("{:.1f}".format(x)) for x in a]
В любом случае, имейте в виду, что вы можете просто работать с десятичными знаками и использовать формат для его представления.
Затем вы можете преобразовать с помощью математики floor
следующим образом:
import math
f = [math.floor(x * 10)/10.0 for x in a]
print(f)
Здесь у вас есть живой пример.
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.