【发布时间】:2019-06-18 21:07:32
【问题描述】:
有什么办法可以去掉双重列表?现在我在列表中有一个列表作为输出。
target_rule = [ '2.1.1 Context','2.1.2.4 Helping Us out','We know that']
target=[]
x=[s for s in target_rule if re.findall("\d",s)]
if x:
target.append(x)
print(target)
输出是
[['2.1.1 Context', '2.1.2.4 Helping Us out']]
但我希望输出是
['2.1.1 Context', '2.1.2.4 Helping Us out']
【问题讨论】:
-
你为什么使用
target而不是仅仅使用x?或者说,target = x? -
删除
if条件,只删除print (x) -
或者,如果你有理由必须以嵌套方式返回它,你可以通过索引到第一个元素来解除嵌套:
target[0] -
您可以将
target.append(x)替换为target.extend(x)。 -
简单的解决方案是
print(x)因为 x 已经是一个列表,因为列表理解表达式 `` x=[s for s in target_rule if re.findall("\d" ,s)] ``` 但是,如果您想连续执行此操作,并且target是您希望以这种方式连续添加的数组,那么一种解决方案就是迭代并附加每个元素 ``` if x : for (element in x){ target.append(element) } ``` 或者你可以使用 list append ``` target+=x ```