在Python中使用for循环将代码缩减为一行

2024-04-18 07:47:24 发布

您现在位置:Python中文网/ 问答频道 /正文

n=20
a=""
for i in range(1,n+1):
    a+=str(i)+" "
    print (a)

我不知道lambda表情。拜托帮助我?你知道吗


Tags: lambdainforrange表情printstr
2条回答

如果您正在寻找一个lambda,则需要一个返回字符串的。这意味着您需要一个生成器来生成字符串。你知道吗

因此,您需要2个级别的str.join

In [856]: f = lambda x: '\n'.join(' '.join(map(str, range(1, i))) for i in range(1, x + 1))

In [857]: print(f(20))

1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
1 2 3 4 5 6 7
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10 11
1 2 3 4 5 6 7 8 9 10 11 12
1 2 3 4 5 6 7 8 9 10 11 12 13
1 2 3 4 5 6 7 8 9 10 11 12 13 14
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

它看起来很复杂,但它就像一个循环,浓缩成一个生成器。我们为每个i使用' '.join(map(str, range(1, i)))生成每一行,然后所有这些行都被新行\n连接起来。你知道吗

我建议

[print(*range(1, i+1)) for i in range(1, 20)] and None

相关问题 更多 >