在Python中使用for循环减少代码到一行

时间:2017-08-06 19:18:26

标签: python for-loop lambda list-comprehension

eval

我不知道parse表达。请帮助我?

2 个答案:

答案 0 :(得分: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

它看起来很复杂,但它与循环相同,浓缩为生成器理解。我们使用' '.join(map(str, range(1, i)))为每个i生成每一行,然后所有这些行都由换行符\n连接起来。

答案 1 :(得分:1)

我建议

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