问题描述
我想实现这个 输出:
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))