用python删除列表的特定字符串元素?

2024-10-05 13:34:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下清单:

L = [('carga', 'NCFS000', 'superior', 'AQ0CS0'),('carga', 'NCFS000', 'frontal', 'AQ0CS0')]

如何删除'NCFS000', 'AQ0CS0'和方括号?,类似于:

[('carga', 'superior'),('carga', 'frontal')]

我已经准备好了:

def remove_values_from_list(the_list, val):
   return [value for value in the_list if value != val]

print "Esta es el bigrama final:\n",\
    remove_values_from_list(L, 'NCFS000')

但是id仍然在列表中,我如何删除id并以所需格式获取所有单词?。如何声明此任务的正则表达式?。谢谢


Tags: thefromidvaluedefvalremovelist
3条回答

这里的问题是您有一个嵌套的集合,但没有嵌套的循环。顶级列表没有任何值== 'NCFS000',因此在删除所有这些值之后,没有任何更改。你知道吗

您想要的是:对于列表中的每个元组,删除每个值== 'NCFS000',对吗?这里有两个“each”,所以代码中需要两个for。你知道吗

def remove_values_from_list(the_list, val):
    return [[value for value in the_sublist if value != val]
            for the_sublist in the_list]

当然,这会提供一个列表列表,而不是一开始就提供的元组列表。如果这是一个问题,Python没有“元组理解”,但是它有tuple构造函数和生成器表达式,这已经足够好了:

def remove_values_from_list(the_list, val):
    return [tuple(value for value in the_sublist if value != val)
            for the_sublist in the_list]

您只需迭代元组,而不是值本身。如果要一次删除多个值,可以这样做:

L = [('carga', 'NCFS000', 'superior', 'AQ0CS0'),('carga', 'NCFS000', 'frontal', 'AQ0CS0')]

def remove_values_from_list(the_list, val):    
    return [tuple(value for value in inner_list if value not in val) for inner_list in the_list]

print "Esta es el bigrama final:\n",\
    remove_values_from_list(L, ['NCFS000','AQ0CS0'])

可以使用list comprehensionslicing

>>> L = [('carga', 'NCFS000', 'superior', 'AQ0CS0'),('carga', 'NCFS000', 'frontal', 'AQ0CS0')]
>>> [x[::2] for x in L]
[('carga', 'superior'), ('carga', 'frontal')]
>>>

相关问题 更多 >

    热门问题