Sagemath:有没有办法打印出 Group 或 Ring 的所有元素?

Sagemath: Is there a way to print out all the elements of a Group or a Ring?

如何在 Sagemath 中打印出组或环的所有元素?

我无法在执行此操作的文档中找到任何 command/function。所以我尝试通过 Python for & 我无法理解输出

我用字段试过了

sage: A = GF(7)
sage: [print(i) for i in A]
0
1
2
3
4
5
6
[None, None, None, None, None, None, None]

我无法弄清楚最后的 None、None、None 是什么。

也无法理解商环的输出

 R.<x> = PolynomialRing(Integers(7))
 A = R.quotient(x^2)
 [print(i) for i in A]

0
1
2
3
4
5
6
xbar
xbar + 1
...
xbar + 6
2*xbar
...
2*xbar + 6
...
3*xbar + 6
...
6*xbar + 6
[None,
...
None]

这里又是什么 xbar 和 nones 是什么?

函数 print 打印它的参数和 returns None, 这是 Python 中最接近“不 return 任何东西”的。

当命令的return值为None时,不 得到显示。然而,在这里你正在建立一个列表 这些 return 个值,所以你得到一个列表 元素是 None,并且确实显示了该列表。

为避免这种情况,请在不构建列表的情况下使用 for 循环。

sage: A = GF(7)
sage: for i in A:
....:     print(i)
....:
0
1
2
3
4
5
6

从变量为 x 的多项式环开始, 并取一个商,Sage 使用 xbar 作为 变量图像的默认名称 x 在商数中。

要选择不同的名称:

sage: R.<x> = PolynomialRing(Zmod(3))
sage: A.<t> = R.quotient(x^2)
sage: for i in A:
....:     print(i)
sage: R.<x> = PolynomialRing(Integers(3))
sage: A.<t> = R.quotient(x^2)
sage: for i in A:
....:     print(i)
....:
0
1
2
t
t + 1
t + 2
2*t
2*t + 1
2*t + 2

也可以用x作为商中的变量名:

sage: R.<x> = PolynomialRing(Zmod(3))
sage: A.<x> = R.quotient(x^2)
sage: for i in A:
....:     print(i)
....:
0
1
2
x
x + 1
x + 2
2*x
2*x + 1
2*x + 2

如果您想要单行打印而不是完整的打印循环, 您可以使用 more_itertools 包中的 consume (您首先必须使用 pip 安装)。

sage: %pip install more_itertools
...
sage: from more_itertools import consume
sage: consume(print(i) for i in A)
0
1
2
x
x + 1
x + 2
2*x
2*x + 1
2*x + 2