在Sage中将数字列表转换为q-ary表示

问题描述 投票:1回答:1
"(n,p^n)"
n=2
p=3
p.is_prime()
n in ZZ
list1=list(IntegerRange(0,(p^n)-1))
V1=vector(GF(3),list1)
print V1
list1.digits(base=p,padto=n)

试图获得输出:

[(0, 0),(0, 1),(0, 2),(1, 0),(1, 1),(1, 2),(2, 0),(2, 1),(2, 2)]

我无法弄清楚如何使用列表并将其转换为我可以使用.digits函数的表单

python binary sage
1个回答
1
投票

问题来自于尝试将digits方法应用于列表而不是列表中的每个元素。

定义了

sage: n = 2
sage: p = 3

并且,回顾range(a, b)IntegerRange(a, b)都包括a但排除b

sage: list1 = list(IntegerRange(0, p^n))

然后可以观察list1

sage: list1
[0, 1, 2, 3, 4, 5, 6, 7, 8]

并将digits方法应用于list1的元素

sage: [ZZ(x).digits(base=p, padto=n) for x in list1]
[[0, 0], [1, 0], [2, 0], [0, 1], [1, 1], [2, 1], [0, 2], [1, 2], [2, 2]]

可能然后反转这些数字:

sage: [ZZ(x).digits(base=p, padto=n)[::-1] for x in list1]
[[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]]
© www.soinside.com 2019 - 2024. All rights reserved.