每当遇到特定的列表元素时,如何将列表分成子列表?

时间:2019-01-12 06:54:22

标签: python list

我有此列表:

main_list = [[1, 'N'], [2, 'N'], [3, 'Y'], [4, 'Y'], [5, 'N'], [6, 'N']]

我的要求是:
1.我需要遍历main_list,并且在main_list[i][1]=='N'时,需要继续将main_list[i]添加到sub_list1
2.但是当我遇到main_list[i][1]=='Y'时,应该发生两件事:
  -具有main_list的{​​{1}}元素不应添加到任何'Y'
  -sub_list应该停止
3.当我再次遇到sub_list1时,将生成一个新的sub_list,即main_list[i][1]=='N',并且应该将列表元素添加到此新的sub_list
4.最终输出应如下所示:

sub_list2

能帮忙吗?
预先感谢

1 个答案:

答案 0 :(得分:0)

from itertools import groupby
main_list = [[1, 'N'], [2, 'N'], [3, 'Y'], [4, 'Y'], [5, 'N'], [6, 'N']]

i = 0
d = {}
for key, group in groupby(main_list, lambda x: x[1]):    
    if key == 'Y' : continue 
    d['sub_list{}'.format(i+1)] = []       
    for g in group:        
        d['sub_list{}'.format(i+1)].append(g)

    i += 1