如何在Python的新行中打印列表的不同部分?

时间:2016-01-13 20:07:07

标签: python string

我有两个列表,一个是已知长度,另一个是随机长度:

MyList1 = [[1, 2, 3], [4, 5],[5, 6, 7, 8]].
MyList2 = [1, 2, 3, 4 ,5 ,6 ]

我需要按以下方式打印第二个,其中3行代表第一个列表中的对象数量:

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

问题是我不知道这个列表的确切长度,并且行的大小可能不相等。

我坚持用for loop做这件事,但它似乎无效。

4 个答案:

答案 0 :(得分:1)

while循环可以更好地完成这一操作。

list1 = [1, 2, 3]
list2 = [1, 2, 3, 4, 5 ,6 ]

start = 0
while start < len(list2):
    print list2[start:start+len(list1)]
    start += len(list1)

答案 1 :(得分:0)

如果您对如何使用for循环感到好奇:

step_size = int(len(list2)/len(list1))
for i in range(0, len(list1) - 1):
    start = i * step_size
    end = start + step_size
    print(list2[start:end])
print(list2[len(list1)*step_size - step_size:])

循环后的print打印最后一个块,其大小可能与其他块不同。

答案 2 :(得分:0)

您可以尝试这样的生成器功能,

my_list1 = [1, 2, 3, 4 ,5 ,6 ]
my_list2 = [1, 2, 3]

def make_list(lst1, lst2):
    item_count = len(lst1) / len(lst2)
    for ix in range(0, len(lst1), item_count):
        yield lst1[ix:ix + item_count]

print list(make_list(my_list1, my_list2))

答案 3 :(得分:0)

根据您的上一条评论,我认为以下内容对您有用:

>>> l1
[[1, 2, 3], [4, 5], [5, 6, 7, 8]]
>>> l2
[1, 2, 3, 4, 5, 6]
>>> i,s=0,0
>>> while s < len(l2):
        print l2[s:s+len(l1[i])]
        s += len(l1[i])
        i += 1
[1, 2, 3]
[4, 5]
[6]