可以在for循环中使用lambda吗?

时间:2019-03-23 14:39:46

标签: python python-3.x lambda

我想通过lambda函数执行任务,但不确定是否可行。

假设我有以下列表:

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

列表的最长长度为566,所以len(566) = 3

然后我要将该元素的所有元素扩展为最后一位。

例如,3将是333,而45将是455。

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

是否可以使用lambda函数实现此目标?

我想我必须在一行中使用lambda和for以及一个函数。

另一个例子:

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

列表的最大长度为4,因此将所有列表的最后一位扩展为长度4。

list = [1111,2111,3333,5344]

我的试用版,但是第一次使用lambda:

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

4 个答案:

答案 0 :(得分:1)

您可以将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]

答案 1 :(得分:0)

@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]

答案 2 :(得分:0)

这是基于 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]

答案 3 :(得分:0)

您可以结合使用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]