一种Python式的方法来删除列表中仅一个元素的连续重复项

The*_*ter 5 python

我知道还有很多其他类似的问题,但我的问题有所不同,导致他们的答案无法解决。

我有几个可能有多个连续空格的字符列表,我只需要保留其中一个。任何其他字符的重复都应该保留。我通过以下方式做到了:

myList = ['o', 'e', 'i', ' ', ' ', ' ', 'l', 'k', ' ', ' ', ' ', ' ', ' ', 'j', 'u']
myList_copy = [myList[0]]

for i in range(1, len(myList):
    if not(myList[i] == ' ' and myList[i-1] == ' '):
        myList_copy.append(myList[i])
Run Code Online (Sandbox Code Playgroud)

这成功地给了我

['o', 'e', 'i', ' ', 'l', 'k', ' ', 'j', 'u', ' ']
Run Code Online (Sandbox Code Playgroud)

我真的不认为这是一个非常好的、快速的方法。

我看过类似这个(以及其他)的帖子,其中有类似的问题。但是,请注意,我实际上只需要删除重复的空格。也许我需要帮助是使用 groupby 来做到这一点,但这就是新帖子的原因。

提前致谢。

ywb*_*aek 3

又一个简单的?方法:

  1. 连接中的每个项目以myList创建一个字符串
  2. 按空格分割字符串
  3. 用空格加入
  4. 将字符串转换为列表
myList = ['o', 'e', 'i', ' ', ' ', ' ', 'l', 'k', ' ', ' ', ' ', ' ', ' ', 'j', 'u']

new = list(' '.join(''.join(myList).split()))
print(new)
Run Code Online (Sandbox Code Playgroud)
['o', 'e', 'i', ' ', 'l', 'k', ' ', 'j', 'u']
Run Code Online (Sandbox Code Playgroud)