删除列表中包含部分单词的 Python 列表中的元素

Posted

技术标签:

【中文标题】删除列表中包含部分单词的 Python 列表中的元素【英文标题】:Remove an element in Python list with partial word in list 【发布时间】:2021-10-27 17:56:03 【问题描述】:

我有一个看起来像这样的列表,我尝试了以下代码,但似乎没有任何效果。我的名为“ss”的列表看起来像这样,我正在尝试删除列表中带有“Sheet”的所有元素:

ss = ['14', '13', '11', '10', '9', '8', '6', '3', '2', '1', '0', '7', '4', '12', '5', 'Sheet12', 'Sheet1']

我已经尝试过这种变体,但它们什么也没做:

ssnew = list(filter( lambda s: not (s[0:4]=="Sheet"), ss))

或者,

newss = ss.replace("Sheet","")for x in ss

我需要我的新列表 newss 看起来像这样 -->

newss = ['14', '13', '11', '10', '9', '8', '6', '3', '2', '1', '0', '7', '4', '12', '5'] 

【问题讨论】:

您的两种方法几乎都是正确的:list(filter(lambda s: not s[0:5]=="Sheet", ss)) -> 您的切片是一个,x.replace("Sheet","") for x in ss -> 您尝试替换 list ss 而不是 string x 值。第二种方法只有在所有值都是唯一的并且“工作表”的其余值在 list 中有重复时才有效。 【参考方案1】:

另一种解决方案是:

lst = [i for i in ss if i.isdigit()]
print(lst)

【讨论】:

【参考方案2】:

由于您确实提到列表元素不应包含“Sheet”而没有其他要求,因此此列表理解是正确的:

print([x for x in ss if 'Sheet' not in x])

【讨论】:

【参考方案3】:

使用理解:

>>> [i for i in ss if not i.startswith('Sheet')]
['14',
 '13',
 '11',
 '10',
 '9',
 '8',
 '6',
 '3',
 '2',
 '1',
 '0',
 '7',
 '4',
 '12',
 '5']

【讨论】:

以上是关于删除列表中包含部分单词的 Python 列表中的元素的主要内容,如果未能解决你的问题,请参考以下文章

Python 3,如果列表中包含特定的东西,如何删除部分元素3 [重复]

python 元组操作总结

如何对对象中包含的列表进行排序

计算包含来自其他列表Python的单词的句子数[关闭]

如何从python中的列表中删除重复的元组?

制作其他列表中包含字符串的行列表