删除列表中包含部分单词的 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 列表中的元素的主要内容,如果未能解决你的问题,请参考以下文章