Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检查列表中的相邻元素 def移除相邻(nums): 列表1=[] le=len(nums)#获取输入数组的长度(le-1是最后一个索引) 对于范围内的idx(len(nums)):#使用索引遍历nums 如果idx_Python_List - Fatal编程技术网

Python 检查列表中的相邻元素 def移除相邻(nums): 列表1=[] le=len(nums)#获取输入数组的长度(le-1是最后一个索引) 对于范围内的idx(len(nums)):#使用索引遍历nums 如果idx

Python 检查列表中的相邻元素 def移除相邻(nums): 列表1=[] le=len(nums)#获取输入数组的长度(le-1是最后一个索引) 对于范围内的idx(len(nums)):#使用索引遍历nums 如果idx,python,list,Python,List,我正在学习Python(目前正在学习Google课程)。任务是: D.给定一个数字列表,返回一个列表,其中 所有相邻==元素已缩减为单个元素, 所以[1,2,2,3]返回[1,2,3]。您可以创建一个新列表或 修改传入列表 现在我想我成功地解决了这个任务,但它看起来很复杂。此外,我想先学习以最基本的方式编码,而不使用大量的模块导入。如何使用基本方法集以更优雅的方式解决这个问题? 此外,我还希望得到关于良好编码风格、习惯、形式等方面的建议和提示。您可以根据列表进行设置。集合只能有元素的单个实例 d

我正在学习Python(目前正在学习Google课程)。任务是:

D.给定一个数字列表,返回一个列表,其中 所有相邻==元素已缩减为单个元素, 所以[1,2,2,3]返回[1,2,3]。您可以创建一个新列表或 修改传入列表

现在我想我成功地解决了这个任务,但它看起来很复杂。此外,我想先学习以最基本的方式编码,而不使用大量的模块导入。如何使用基本方法集以更优雅的方式解决这个问题?
此外,我还希望得到关于良好编码风格、习惯、形式等方面的建议和提示。

您可以根据列表进行设置。集合只能有元素的单个实例

def remove_adjacent(nums):
  list1 = []
  le = len(nums) # get length of input array (le-1 is the last index)
  for idx in range(len(nums)): # iterate through nums using the indices
      if idx < le-1: # if before the last element
          if nums[idx] != nums[idx +1]: # and if current element is not the same as the next element
              list1.append(nums[idx]) # append the current element. Otherwise (elem reoccurs), do not append!
      else: # if at last elem of nums
          list1.append(nums[idx]) # just append

  return list1
编辑: 把这个集合编成一个列表

my_list = [1,2,2,3]
my_set = set(my_list)

print(s)
>>> {1,2,3}

我试着用最简单的方式来表达

my_list = list(my_set)

您的函数似乎工作正常,但通过直接迭代元素而不是使用索引,它可能更“pythonic”

不使用任何“奇特”的标准库函数:

def过滤器相邻重复(lst):
#确保检查'lst'是否为空
如果不是lst:
返回lst
#构造一个不包含相邻重复项的新列表
已筛选=[lst[0]]
对于lst中的元素[1:]:
如果元素!=过滤[-1]:
过滤后的.append(elem)
返回过滤
<>你也可以考虑把上面的函数转换成生成器:

def过滤器相邻重复(lst):
#确保检查'lst'是否为空
如果不是lst:
返回
#生成每个有效候选项,跳过重复项
产量lst[0]
上一个值=lst[0]
对于lst中的元素[1:]:
如果元素!=上一个值:
屈服线
上一个值=元素

在本课程中,他们是否给出了更多的输入和输出示例?介意分享它们吗?它们使用类似[],[2,2,3,3],[1,2,2,3]的东西进行测试。
[2,2,3,3],
的输出将是
[2,3]
?这不会保留原始列表的顺序。试试
[3,2,2,1]
哦,你说得对。我没有考虑过。谢谢你的更正!对我来说这是个好答案!然而,prevelem=num[0]-1在我看来有点可疑(可能是初学者),因为实际值会随机更改。然而,似乎只有一种逻辑,包含!=prevelem和第一次例外情况。是的,您是对的,唯一的例外情况是第一个值。我只是想确保prevelem值和第一个元素值不一样,所以我第一次从第一个值中减去1。还有一个方法可以处理这个问题,我们可以附加第一个元素,然后从第二个元素开始迭代,将第一个元素视为prevelem。我相信这也是谷歌解决方案的工作原理!
l = [1,2,2,2,2,3,3]
def removeAdj(num):
   prevelem = num[0] -1 ##Assigning prev value one less than first element so that it will not be same as first element
   updatedList = []  ## New list
   for elem in num:
      if elem !=prevelem:
          updatedList.append(elem) ## If element not same as previous element append
      prevelem = elem ## Assign previous value the current value
   return updatedList ## Return updated list
print(removeAdj(l))