init = ['a','b','','c','d e','fgh','ij','k','l','']
此列表的最后一个元素始终是结束”.可以连续的’s被认为是单身.
我需要的结果是:
end = [('a','b'),('c','fgh'),('ij',),('k','l')]
我已经有了丑陋的代码来完成工作,并且在列表完全d出后会超出范围:
end = []while init[-1] == u'': init.pop() l = [] while init[-1] != u'': l.append(init.pop()) end.append(tuple(l))
我想使用理解,但是尝试解压缩参数列表,反转自引用列表,使用双端队列和各种代码气味都没有成功,我现在怀疑是否有必要寻找(嵌套)理解解决方案?
解决方法 您可以使用itertools.groupby函数根据元素的大小对元素进行分组,如下所示>>> from itertools import groupby>>> init = ['a','']>>> [tuple(g) for valID,g in groupby(init,key=lambda x: len(x) != 0) if valID][('a','l')]
这基本上根据元素的长度对元素进行分组.如果项目的长度不等于零,则它们将被放入一个组中,直到满足来自另一个组的元素.对于长度不等于零的元素组,键函数将返回True,否则返回False.我们忽略具有False的组(因此检查是否有效).
总结以上是内存溢出为你收集整理的python – 将列表拆分为不均匀的元组全部内容,希望文章能够帮你解决python – 将列表拆分为不均匀的元组所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)