Не получается решить в одну строчку используя lambda функции или другие
floats: list[float] = [12.3554, 4.02, 5.777, 2.12, 3.13, 4.44, 11.0001]
names: list[str] = ["Vanes", "Alen", "Jana", "William", "Richards", "Joy"]
numbers: list[int] = [22, 33, 10, 6894, 11, 2, 1]
Напишите код, который создаёт три новых списка. Вот их содержимое:
1)Каждое число из списка floats возводится в третью степень и округляется до трёх знаков после запятой.
2)Из списка names берутся только те имена, в которых есть хотя бы пять букв.
3)Берётся произведение всех чисел из списка numbers.
Python
Работа со списками Python. В одну строку.
не, ну, понятно, что map, filter и reduce, но можно и без них
и в первых двух случаях, через list comprehension, имхо, получится даже симпатичнее:
floats = [12.3554, 4.02, 5.777, 2.12, 3.13, 4.44, 11.0001]
floats1 = [round(x**3, 3) for x in floats]
print(floats)
names = ["Vanes", "Alen", "Jana", "William", "Richards", "Joy"]
names1 = [x for x in names if len(x) >= 5]
print(names1)
numbers = [22, 33, 10, 6894, 11, 2, 1]
numbers1 = 0 if numbers == [] else (lambda F, L : F(F, L))(lambda F, L : L[0] * (1 if len(L)==1 else F(F, L[1:])), numbers)
print(numbers1)
и в первых двух случаях, через list comprehension, имхо, получится даже симпатичнее:
floats = [12.3554, 4.02, 5.777, 2.12, 3.13, 4.44, 11.0001]
floats1 = [round(x**3, 3) for x in floats]
print(floats)
names = ["Vanes", "Alen", "Jana", "William", "Richards", "Joy"]
names1 = [x for x in names if len(x) >= 5]
print(names1)
numbers = [22, 33, 10, 6894, 11, 2, 1]
numbers1 = 0 if numbers == [] else (lambda F, L : F(F, L))(lambda F, L : L[0] * (1 if len(L)==1 else F(F, L[1:])), numbers)
print(numbers1)
1)
print(list(map(lambda x: float('{:.3f}'.format(x ** 3)),[12.3554, 4.02, 5.777, 2.12, 3.13, 4.44, 11.0001])))
>>>
[1886.125, 64.965, 192.8, 9.528, 30.664, 87.528, 1331.036]
2)
print(list(filter(lambda x: len(set(x)) >= 5, ["Vanes", "Alen", "Jana", "William", "Richards", "Joy"])))
>>>
['Vanes', 'William', 'Richards']
3)
Произведение в одну строчку не сделать, ибо нужно для начала импортировать reduce
Минимум две строчки получится
from functools import reduce
print(reduce(lambda prev, el: prev * el, [22, 33, 10, 6894, 11, 2, 1]))
>>>
1101109680
print(list(map(lambda x: float('{:.3f}'.format(x ** 3)),[12.3554, 4.02, 5.777, 2.12, 3.13, 4.44, 11.0001])))
>>>
[1886.125, 64.965, 192.8, 9.528, 30.664, 87.528, 1331.036]
2)
print(list(filter(lambda x: len(set(x)) >= 5, ["Vanes", "Alen", "Jana", "William", "Richards", "Joy"])))
>>>
['Vanes', 'William', 'Richards']
3)
Произведение в одну строчку не сделать, ибо нужно для начала импортировать reduce
Минимум две строчки получится
from functools import reduce
print(reduce(lambda prev, el: prev * el, [22, 33, 10, 6894, 11, 2, 1]))
>>>
1101109680
floats = [12.3554, 4.02, 5.777, 2.12, 3.13, 4.44, 11.0001]
print(list(map(lambda x: round(x ** 3, 3), floats)))
print(list(map(lambda x: round(x ** 3, 3), floats)))
Станислав Панов
Для третьего могу такое придумать, но не знаю считается ли это.
a = [22, 33, 10, 6894, 11, 2, 1]
v = lambda x: a[x] * (v(x - 1) if x - 1 >= 0 else 1)
print(list(map(v, range(len(a)))))
a = [22, 33, 10, 6894, 11, 2, 1]
v = lambda x: a[x] * (v(x - 1) if x - 1 >= 0 else 1)
print(list(map(v, range(len(a)))))
Нафиг питон, учи лучше первоисточник - С++.
Эдик Топчий
нафиг С++, учи лучше первоисточник- физику на уровне атомов
from typing import List
import functools
floats: List[float] = [12.3554, 4.02, 5.777, 2.12, 3.13, 4.44, 11.0001]
names: List[str] = ["Vanes", "Alen", "Jana", "William", "Richards", "Joy"]
numbers: List[int] = [22, 33, 10, 6894, 11, 2, 1]
print(list(map(lambda x: float('{:.3f}'.format(x ** 3)), floats)))
print(list(filter(lambda x: len(set(x)) >= 5, names)))
print(functools.reduce(lambda x, y: x * y, numbers))
import functools
floats: List[float] = [12.3554, 4.02, 5.777, 2.12, 3.13, 4.44, 11.0001]
names: List[str] = ["Vanes", "Alen", "Jana", "William", "Richards", "Joy"]
numbers: List[int] = [22, 33, 10, 6894, 11, 2, 1]
print(list(map(lambda x: float('{:.3f}'.format(x ** 3)), floats)))
print(list(filter(lambda x: len(set(x)) >= 5, names)))
print(functools.reduce(lambda x, y: x * y, numbers))
Похожие вопросы
- Python. Использование стандартных методов работы со списками(для чайников)
- Задача со списками, Python
- Парсер python работа со списками.
- Шифрование строки. Python
- Проблема с программой типа "список" в Python
- Дан список чисел. Нужно посчитать количество их "пар" (т.е. "1 1 1 1 1" = 10, "1 2 3 2 3" = 2 и т.д.) (Python)
- Как в python получить элемент из списка по нескольким значениям
- Python: как в файле json найти строки по заданному тексту и скопировать рядом стоящую строку
- Заполнить двухмерный список случайными числами python
- Помогите со строками в python
numbers_new = functools.reduce(lambda x, y: x * y, [22, 33, 10, 6894, 11, 2, 1])