从 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 中,如何从列表中删除包含某些类型字符的任何元素?

如何使用python从数组中删除特定元素

一道Python练习题引发的,一个知识点的探讨:删除列表中特定元素的几种方法

python怎么删除列表中的某个元素

Python列表操作

Python:如何在迭代列表时从列表中删除元素而不跳过未来的迭代