如何解决如何使用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 举报,一经查实,本站将立刻删除。