我有一个列表,例如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]
答案 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]