python – 在列表中加入特定元组
发布时间:2020-12-20 12:21:54 所属栏目:Python 来源:网络整理
导读:我最近一直在问这个问题,并且感觉不太需要这么多的帮助,但这个算法看起来很难. 我有一个像这样的元组列表: [('12 Mar 2011',),('152','Farko','Kier'),('153','Park','Pub'),('09 Mar 2011',('158','Diving','Jogging')] 具有日期的元组将始终具有len == 1.
我最近一直在问这个问题,并且感觉不太需要这么多的帮助,但这个算法看起来很难.
我有一个像这样的元组列表: [('12 Mar 2011',),('152','Farko','Kier'),('153','Park','Pub'),('09 Mar 2011',('158','Diving','Jogging')] 具有日期的元组将始终具有len == 1.现在,我需要将所有以下非日期元组加入每个前一个日期.非日期元组的数量将始终未定义.日期元组将连接序列中的每个非日期元组,直到它接近下一个日期元组,然后该元组必须加入以下所有非日期元组,依此类推.最终结果应该是这样的: [('152','Kier','12 Mar 2011'),'Pub','Jogging','09 Mar 2011',] 如果你不能提供一个现成的代码,也许有一些提示在哪里查看,有什么方法,因为我无法想到我的工具包中可以做得很好的任何事情. 解决方法
您可以使用itertools.groupby编写此函数,但命令式生成器函数可能更具可读性:
def join_dates(l): date = None for t in l: if len(t) == 1: date = t else: yield t + date 为了完整性,这里是itertools解决方案: from itertools import groupby [t + ds[0] for ds,ts in zip(*[(list(g) for _,g in groupby(l,len))] * 2) for t in ts] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |