gpt4 book ai didi

python - 在python中获取列表的旋转

转载 作者:太空宇宙 更新时间:2023-11-03 12:38:45 25 4
gpt4 key购买 nike

我想要所有可能的单右移数组:

def gen(total):
rot = []
init = [0]*total
init[0] = 1
print init
rot.append(init)
for i in range(total-1):
init[i] = init[i] - init[i+1]
init[i+1] = init[i] + init[i+1]
init[i] = init[i+1] - init[i]
print init
rot.append(init)
return rot

rot = gen(8)

print rot

这打印

[1, 0, 0, 0, 0, 0, 0, 0]
[0, 1, 0, 0, 0, 0, 0, 0]
[0, 0, 1, 0, 0, 0, 0, 0]
[0, 0, 0, 1, 0, 0, 0, 0]
[0, 0, 0, 0, 1, 0, 0, 0]
[0, 0, 0, 0, 0, 1, 0, 0]
[0, 0, 0, 0, 0, 0, 1, 0]
[0, 0, 0, 0, 0, 0, 0, 1]

我希望这是列表列表。我初始化一个数组 rot 但附加到它会创建相同的行

[[0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 1]]

如何处理这个问题?

PS:我不想像numpy.eye(8)那样使用numpy

最佳答案

现有的答案很好地涵盖了现有代码的问题,所以这里有一个完全不同的方法:

>>> [[int(a==b) for b in range(8)] for a in range(8)]
[[1, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0],
[0, 0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 1]]

(为了易读性我在输出中添加了一些换行符)

关于python - 在python中获取列表的旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32908010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com