Можно ли использовать лямбда в цикле for для этого? - PullRequest
1 голос
/ 23 марта 2019

Я хочу выполнить задачу с лямбда-функцией, но не уверен, что это возможно.

Допустим, у меня есть следующий список:

list =  [3,2,33,45,566,21]

Самая длинная длина списка - 566, поэтому len(566) = 3.

Затем я хочу расширить элемент на все элементы с помощью последней цифры.

Например, 3 будет 333, а 45 - 455.

Listchange = [333,222,333,455,566,211]

Можно ли достичь этой цели с помощью лямбда-функции?

Полагаю, мне нужно использовать лямбду, а для и если функцию в одной строке.

Другой пример:

list = [1,21,3,4,5344]

Максимальная длина списка - 4, поэтому расширите весь список до длины 4 с последней цифрой.

list = [1111,2111,3333,5344]

Моя пробная версия, но впервые с использованием лямбды:

print(list(map(lambda i: for i in range(maxnum)-len(i): i+=i ,x)))

Ответы [ 4 ]

1 голос
/ 23 марта 2019

Вы можете использовать метод str.ljust с параметром fillchar, установленным на последнюю цифру числа:

lst = [1, 21, 3, 4, 5344]
list(map(lambda i: int(str(i).ljust(4, str(i % 10))), lst))

Возвращает:

[1111, 2111, 3333, 4444, 5344]
0 голосов
/ 23 марта 2019

Вы можете использовать комбинацию f-строки и метода format():

lst = [3, 2, 33, 45, 566, 21]

max_length = max(map(len, map(str, lst)))
list(map(lambda x: int(f'{{:{str(x)[-1]}<{max_length}}}'.format(x)), lst))
# [333, 222, 333, 455, 566, 211]
0 голосов
/ 23 марта 2019

Вот еще один подход, основанный на решении blhsing , которое будет работать для произвольной длины:

inList =  [3,2,33,45,566,21]
inList = list(map(lambda elem: int(str(elem).ljust(len(str(max(inList))),str(elem)[-1])), inList))
print(inList)

Вывод:

[333, 222, 333, 455, 566, 211]
0 голосов
/ 23 марта 2019

Правильный ответ, как уже было предоставлено @blhsing. Однако, если кто-то ищет решение для понимания списка, вот оно:

my_list = [1,21,3,4,5344]
max_length = 4
new_list = [int(x + x[-1]*(max_length-len(x))) for x in map(str, L)]

Возвращает:

[1111, 2111, 3333, 4444, 5344]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...