Python 2.7 列表理解数字金字塔

标签 python python-2.7

我正在尝试使用嵌套列表理解和字符串格式创建以下数字金字塔。

1
2  4
3  6  9
4  8  12  16
5  10  15  20  25
6  12  18  24  30  36
7  14  21  28  35  40  47

我想出了如何使用嵌套 for 循环创建金字塔,但无法完全使用列表理解来使其工作。这是我的代码:

for n in range(1,8):
    print
    for x in range(n):
        if x>0:
            print '%2d' % (n+(n*x)),
        else:
            print '%d' % n,

使用列表理解的相同代码给我一个语法错误:

rows = [
    '%2d' % (n+(n*x)), if x > 0 else '%d' % n,
    for n in range(1,8)
    for x in range(n)
]

print '\n' +'\n'.join(rows)

关于如何使用列表理解正确格式化金字塔的任何想法?

最佳答案

您可以使用range来构建每个嵌套列表,如下所示:

# Generation
result = [range(x, x**2 + 1, x) for x in range(1, 8)]

# Formatting
print('\n'.join(''.join(str(x).ljust(4) for x in row) for row in result))

输出:

1
2   4
3   6   9
4   8   12  16
5   10  15  20  25
6   12  18  24  30  36
7   14  21  28  35  42  49

关于Python 2.7 列表理解数字金字塔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43662993/

相关文章:

python - 调试期间的私有(private)变量

python - 使用自定义格式化程序登录 django

python - 什么是好的 Django 工作流程?

python - 写入 COIN-OR CBC 日志文件

python - 让用户输入变量用于以后的方程式

python - cygdb导入错误: No module named 'Cython'

python - 为什么在 Odoo v11 中删除了工作流?

python - python 中的猴子修补 : When we need it?

python - 如何使用 pyserial 将文件逐行写入 com0com?

python import ---为什么不能导入?