python – 使用逗号分隔值从另一个列表生成列表
发布时间:2020-12-20 11:05:25 所属栏目:Python 来源:网络整理
导读:我有以下列表: mylist = ['7','8,9','10','11,12'] 我想要一个列表: ['7','8','9','11','12'] 我能得到的最近的是使用此代码: mylist = ['7',12']ab = []for e in mylist: if ',' in e: ab.append(e.split(','))mylist2 = [x for x in mylist if ',' not
我有以下列表:
mylist = ['7','8,9','10','11,12'] 我想要一个列表: ['7','8','9','11','12'] 我能得到的最近的是使用此代码: mylist = ['7',12'] ab = [] for e in mylist: if ',' in e: ab.append(e.split(',')) mylist2 = [x for x in mylist if ',' not in x] print mylist2 #clean list merged = [] for f in ab: merged = mylist2 + f 但是,这省略了’8′,’9’序列,我怎样才能轻松实现这一目标? 解决方法
您现有代码的问题非常简单:
merged = [] for f in ab: merged = mylist2 + f 对于ab中的每个f,您会忘记合并中的任何内容并将其替换为mylist f.所以,最后,只有最后一个f最终合并. 你可能想要这样的东西: for f in ab: mylist2 = mylist2 + f merged = mylist2 这样我们就可以将每个f添加到列表中并将结果存储在同一个地方. 但是,有一种更简单的方法可以解决这个问题.而不是用逗号删除它们然后再添加它们,只需处理所有内容: mylist = ['7',12'] merged = [] for element in mylist: elements = element.split(',') merged += elements 这可以保留所有内容,并保持原始顺序,并且更简单. (注意’7′.split(‘,’)非常精细 – 它返回一个单元素列表[‘7’],您可以像[‘8’,’9’一样添加到累积列表中].) 您可以通过首先使用理解来拆分每个元素,然后合并和展平结果来使这更简洁.有几种方法可以写这个,但这里有几个: merged = [subelement for element in mylist for subelement in element.split(',')] from itertools import chain merged = list(chain.from_iterable(element.split(',') for element in mylist)) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |