Python有关列表解析式

我想创建一个列表edge
edge[i][j]=True if gcd(i,j)==1 else False
1<=i,j<=21
怎么用列表解析式一行写完?

edge=[ [ True if gcd(i,j)==1 else False  for j in range(1,22) ] for i in range(1,22)]

这样试试

首先,你的三元运算符本身就可以简化成
edge[i][j]= gcd(i,j)==1
所以最终的表达式是:
edge=[[gcd(i,j)==1 for i in range(21)] for j in range(21)]
-=-=--=-
另,索引应该从0开始,所以i,j的取值范围应该是0<=i,j<=20
如果gcd(i,j)这里i,j必须从1开始,那么你可以写成gcd(i+1,j+1)

你这个i和j表示的行,列范围在1~21,而解析式会产生0行,0列,是没考虑周全还是要用程序补全0行0列?