0

我正在尝试删除列表中所有彼此相等的第一个元素,但我发现我的代码很难看。

这里举个例子:my_list = [1,1,1,9,9,2]成为my_list = [1,9,9,2]

for spot_prec, spot in zip(my_list, my_list[1:]):
    if spot_prec == spot:
        del spot_prec
    else:
        break

如何压缩它?我听说过生成器表达式,但我在包含我的else break语句时遇到了问题。

4

1 回答 1

-1

在澄清OP之后,似乎需要的是:

for ii, element in enumerate(my_list):
    if element == my_list[0]:
       continue
    else:
       break
new_list = my_list[ii-1:]

此外,使用 itertools dropwhile,我们可以连接元素 0 和在开头删除任何等于第一个元素的元素的结果:

new_list = [my_list[0]] + list(dropwhile(lambda x: x == my_list[0], my_list))
于 2017-10-16T10:22:57.397 回答