Python初学者练习问题:使用列表判断两个相邻元素是否相同

0 投票
4 回答
1047 浏览
提问于 2025-04-15 20:40

我得到了这些:

# D. Given a list of numbers, return a list where
# all adjacent == elements have been reduced to a single element,
# so [1, 2, 2, 3] returns [1, 2, 3]. You may create a new list or
# modify the passed in list.
def remove_adjacent(nums):
  for number in nums:
    numberHolder = number

  # +++your code here+++
  return

我现在有点卡住了。我该怎么办呢?

4 个回答

0

把现在的数字和之前的数字进行比较。如果这两个数字不一样,就把现在的数字加到一个新的列表里。然后把这个列表保存起来,以便下一个循环可以使用。

5
>>> import itertools
>>> [i[0] for i in itertools.groupby([1,2,2,3,3,3,2,2])]
[1, 2, 3, 2]

或者:

>>> def f(l):
...     r = []
...     last = None
...     for i in l:
...         if i != last:
...             r.append(i)
...             last = i
...     return r        
... 
>>> f([1,2,2,3,3,3,4,4,2,2])
[1, 2, 3, 4, 2]
1

试试这个:

def remove_adjacent(nums):
  removed_list = []
  numberHolder = None
  for number in nums:
    if number != numberHolder:
       removed_list.append(number)
       numberHolder = number
  return removed_list

撰写回答