微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用python中的列表理解在两个循环之间打印行,以创建金字塔

如何解决如何使用python中的列表理解在两个循环之间打印行,以创建金字塔

我想实现这个 输出

PUBLIC dbContext:DbContext
{
   PRIVATE int tenantId;
   public dbContext(DbContextOptions<dbContext> options): base(options) { 
        //securityHelper IS EXTERNAL LIBRARY
        this.tenantId = securityHelper.GetClaim<INT>("tenantId");
   }
   protected override void OnModelCreating(ModelBuilder modelBuilder)
   {
      modelBuilder.Entity<AccountsTransactions>().HasQueryFilter(p=>p._tenantId == this.tenantId);
   }

Whis 是用普通的 for 循环完成的

1
12
123
1234
12345

我如何对列表理解做同样的事情?我应该如何在列表理解中打印空行。

我已经走到这一步了:

for i in range(1,7):
    for j in range(1,i):
        print(j,end='')
    print(' ')

输出

[ print(j,end='')  for i in range(1,7)  for j in range(1,i)  ]

解决方法

您可以使用 str.join() 以所需格式创建字符串:

print(*[''.join(str(j) for j in range(1,i)) for i in range(1,7)],sep="\n")

# without "sep" in older versions of Python:
# print('\n'.join(''.join(str(j) for j in range(1,7)))

将打印:

1
12
123
1234
12345
,

打印\n而不是打印一个空格。这是换行符的转义符。

,

这里有一些方法,从简单到更高级......

作为向累积变量添加数字的简单循环:

n = 0
for i in range(1,6):
    n = n*10 + i
    print(n)

使用子范围直到行号:

for n in range(1,6):
    print(*range(1,n+1),sep="")

使用来自 itertools 模块的累积:

from itertools import accumulate
for line in accumulate(range(1,6),lambda a,b:a*10+b):
    print(line)

作为递归函数:

def incDigit(N): return 1 if N==1 else incDigit(N-1)*10+N

for n in range(1,6): print(incDigit(n))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?