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