如何在列表中的所有位置上移动元素并打印所有结果?

时间:2019-06-16 19:31:45

标签: python python-3.x loops arraylist

我有一个列表,例如a=[0,1,2,3]。我该如何打印输出,将所有元素逐个移动0并将其打印出来?

我已经尝试过list.pop()list.rotate(),但是他们只做过一次,因此似乎无法遍历整个列表。

所需的输出

[0,1,2,3]
[1,0,2,3]
[1,2,0,3]
[1,2,3,0]

2 个答案:

答案 0 :(得分:0)

# we don't modify the original list, l
l = [0,1,2,3]
l_copy = l.copy()
l_0 = l_copy.pop(0)
for i in range(len(l_copy) + 1):
    l_copy_2 = l_copy.copy()
    l_copy_2.insert(i, l_0)
    print(l_copy_2)

答案 1 :(得分:0)

这是一种方法。它使用切片来选择列表的各个部分,然后以不同的方式将它们放回一起。这会将列表的第一个元素移动到列表中的各个位置。请注意,可以通过在循环之前计算并存储a[:1]来稍微加速该代码,但要花一行额外的代码,因为在两次循环执行之间这不会改变。您还应该注意,Python的列表没有rotate方法,因此我不确定您在尝试什么。

a =[0, 1, 2, 3]

for i in range(len(a)):
    print(a[1:i+1] + a[:1] + a[i+1:])

打印出来的是您想要的,尽管每个逗号后都有一个空格,这在Python中是标准的。

[0, 1, 2, 3]
[1, 0, 2, 3]
[1, 2, 0, 3]
[1, 2, 3, 0]

如果您确实希望输出中没有空格,则可以使用

a =[0, 1, 2, 3]

for i in range(len(a)):
    print(str(a[1:i+1] + a[:1] + a[i+1:]).replace(' ', ''))

给出输出

[0,1,2,3]
[1,0,2,3]
[1,2,0,3]
[1,2,3,0]