去除非重复元素
给定下列的整数列表 nums:
nums = [4, 9, 1, 4, 1, 2, 3, 7, 6, 5, 7, 8, 0, 1, 2, 3, 5, 8]
# 非重复元素 0 1 2 3 4 5 6 7 8 9
第一种方法:
nums = [4, 9, 1, 4, 1, 2, 3, 7, 6, 5, 7, 8, 0, 1, 2, 3, 5, 8]
num = []
for i in nums:
if i not in num:
num.append(i)
print(num)
# 返回:[4, 9, 1, 2, 3, 7, 6, 5, 8, 0]
第二种方法:
nums = [4, 9, 1, 4, 1, 2, 3, 7, 6, 5, 7, 8, 0, 1, 2, 3, 5, 8]
num = list(set(nums))
print(num)
# 返回:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
第三种(快慢指针法):差一点,只在修改原数据的基础上提取
nums = [4, 9, 1, 4, 1, 2, 3, 7, 6, 5, 7, 8, 0, 1, 2, 3, 5, 8]
nums.sort()
low = 0
fast = 0
while True:
fast += 1
if fast > len(nums)-1:
break
if nums[fast] != nums[fast-1]:
low += 1
nums[low] = nums[fast]
print(nums[:low+1])
# 返回:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
第四种(快慢指针法):
nums = [4, 9, 1, 4, 1, 2, 3, 7, 6, 5, 7, 8, 0, 1, 2, 3, 5, 8]
nums.sort()
low = 1
fast = 1
while fast < len(nums):
if nums[fast] != nums[fast-1]:
nums[low] = nums[fast]
low += 1
fast += 1
print(nums[:low])
# 返回:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
去除特定的元素
nums = [4, 9, 1, 4, 1, 2, 3, 7, 6, 5, 7, 8, 0, 1, 2, 3, 5, 8]
target = 4
low = 0
fast = 0
while fast < len(nums):
if nums[fast] != target:
nums[low] = nums[fast]
low += 1
fast += 1
print(nums[:low])
# 返回:[9, 1, 1, 2, 3, 7, 6, 5, 7, 8, 0, 1, 2, 3, 5, 8]