我有一个清单
A= [1,2,3,3,4,4,5,6,4,7]
我想只保留一个3
和4
,如果它们与另一个相同的那个相邻。
因此A应该成为
A= [1,2,3,4,5,6,4,7]
我尝试使用set
set[A]
{1, 2, 3, 4, 5, 6, 7}
但它删除了我想保留的最后一个4
。看来我应该遍历列表并比较i和i + 1。想知道存在更快更聪明的方式吗?
答案 0 :(得分:2)
使用列表理解:
[A[i] for i in range(len(A)) if (i==0) or A[i] != A[i-1]]
#[1, 2, 3, 4, 5, 6, 4, 7]
逻辑是迭代列表中的每个索引,并在以下任一条件成立时保留数字:
i==0
(第一个元素)A[i] != A[i-1]
答案 1 :(得分:0)
试试这个:
A = [1,2,3,3,4,4,5,6,4,7]
newlist = []
newlist.append(A[0])
for i, element in enumerate(A):
if i > 0 and A[i - 1] != element:
newlist.append(element)
在这里,我们遍历列表并检查每个元素是否与之前的元素不相等。它会返回
[1, 2, 3, 4, 5, 6, 4, 7]