交换列表与自己和另一个列表

时间:2015-03-23 11:28:24

标签: python-3.x

我有一个包含6个数字的列表,我有一个包含4个列表的列表。我想将前3个数字放在第一个列表中,接下来的2个数字放在它后面的列表中,最后是最后一个列表中6个列表中的最后一个数字。 我知道这很令人困惑,但这是我的代码可视化它:

Start_Comparing_Index = -1
Looping_Counter = 4 # = 4
for counter in range(4):
Looping_Counter -= 1  # =3
Start_Comparing_Index += 1  # = 0
print("counter = " + str(counter))
for i in range(Looping_Counter):
    s[counter].append(x[Start_Comparing_Index])
    print("Comp index= " + str(Start_Comparing_Index))
    if i == range(Looping_Counter)[-1]:
        break
    else:
        Start_Comparing_Index += 1
print(s) 


but its printing out :

counter = 0
Comp index= 0
Comp index= 1
Comp index= 2
counter = 1
Comp index= 3
Comp index= 4
counter = 2
Comp index= 5
counter = 3
[[1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6]]

虽然我希望它打印此列表:

[[1,2,3],[4,5],[6]]

我的代码出了什么问题?

2 个答案:

答案 0 :(得分:0)

def get_lists(src, n):
    r, s = [], 0
    for i in range(n, -1, -1):
        r.append(src[s:s+i])
        s += i
    return r

print(get_lists(list(range(1, 7)), 3))
# [[1, 2, 3], [4, 5], [6], []]

答案 1 :(得分:0)

奇怪的问题。如果您确切地知道所有列表的长度,以及结果中您想要的元素的确切组合,为什么不完全写出来,没有任何循环?

>>> first = range(1,7)
>>> second = [6]
>>> merged = [first[0:3], first[3:-1], second]
>>> merged
[[1, 2, 3], [4, 5], [6]]