eval
我不知道parse
表达。请帮助我?
答案 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