2024-04-26 04:51:19 发布
网友
我使用的是python3.3 我一直想把这一行写在一行里,但我写不好。你知道吗
plop = [] for i in range (len(list1)): if list1[i] != list1[i-1]: plop.append(list1[i])
如果需要,我不在乎覆盖list1,也不在乎使用“plop”,我也不想使用set。 谢谢!你知道吗
p.s.是个错别字,抱歉
我不知道为什么要“单行线”的要求,但你可以用理解的方法来做
plop = [new_ls[i] for i in range(len(list1)) if list1[i] != list1[i-1]]
…或者如果你不是真的想比较第一个和最后一个元素的第一个值
plop = [v for (x,y,v) in zip(list1, [None]+list1, new_ls) if x != y]
更具可读性(而且不容易出现索引错误-除非您打算将第一个元素与最后一个元素进行比较,将第二个元素与第一个元素进行比较等等…)删除连续重复项的方法是:
from itertools import groupby plop = [k for k, g in groupby(list1)]
当然,你可以“一行”:
from itertools import groupby; plop = [k for k, g in groupby(list1)]
或者,如果不使用集合,并且不能有任何重复项-连续或不连续:
from collections import OrderedDict plop = list(OrderedDict.fromkeys(list1))
我不知道为什么要“单行线”的要求,但你可以用理解的方法来做
…或者如果你不是真的想比较第一个和最后一个元素的第一个值
更具可读性(而且不容易出现索引错误-除非您打算将第一个元素与最后一个元素进行比较,将第二个元素与第一个元素进行比较等等…)删除连续重复项的方法是:
当然,你可以“一行”:
或者,如果不使用集合,并且不能有任何重复项-连续或不连续:
相关问题 更多 >
编程相关推荐