从 Python 列表中删除元素,直到找到特定字符
Posted
技术标签:
【中文标题】从 Python 列表中删除元素,直到找到特定字符【英文标题】:Remove element from a Python list until found a specific character 【发布时间】:2020-05-25 06:57:42 【问题描述】:你好,我有这个 Python 列表
carachter = "@"
list = ['Montpellier', 'Saint-Etienne', '@', 'Strasbourg', 'Reims', '@', 'PSG', 'Olympique Lyonnais', '21:05', 'SPAL', 'Sassuolo', '@', 'Genoa', 'Cagliari', '20:30']
我怎样才能得到这个输出?
list = ['PSG', 'Olympique Lyonnais', '21:05', 'Genoa', 'Cagliari', '20:30']
实际上给定字符@
,我想从列表中删除@
和前两个元素。另一个例子如下。
[1, 2, '@', 3, 4]
输出:[3, 4]
谢谢
【问题讨论】:
具体的字符是什么? 您需要解释为什么有些值在输出中而不是其他值... 具体的字符是'@' 即使使用那个字符我仍然看不到列表之间的相关性 【参考方案1】:您可以让索引相应地删除和过滤。
>>> indexes = set(itertools.chain.from_iterable((i,i-1,i-2) for i in range(len(l)) if l[i]=='@'))
>>> res = [el for i,el in enumerate(l) if i not in indexes]
>>> res
['PSG', 'Olympique Lyonnais', '21:05', 'Genoa', 'Cagliari', '20:30']
【讨论】:
不错的答案,我似乎找不到他想要的模式 添加了另一个示例以使 OP 的意图更加清晰。 @abc,哇...我不知道您是如何从原始问题中得出这一结论的。以上是关于从 Python 列表中删除元素,直到找到特定字符的主要内容,如果未能解决你的问题,请参考以下文章
在 Python 中,如何从列表中删除包含某些类型字符的任何元素?