python列表操作和集合操作有效率差异嘛
描述
今天在刷LeetCode,同样实现的是滑动窗口,但是自己用的是列表模拟的队列操作,别人用的是集合操作,耗时差别好大。。。
需要实现的问题
如果需要看问题题干可以移步:博客链接
代码对比
这个是我自己实现的代码如下
class Solution(object):
def containsNearbyDuplicate(self, nums, k):
queue = []
for i in nums:
if len(queue) > k:
queue.pop(0) # 去头
if i in queue:
return True
queue.append(i)
return False
提交之后,耗时太多。

别人写的代码如下
class Solution:
def containsNearbyDuplicate(self, nums, k):
window = set()
for i, num in enumerate(nums):
if len(window) == k + 1:
window.remove(nums[i - 1 - k])
if num in window:
return True
window.add(num)
return False
耗时明显低了很多

疑问
自己感觉可能是python底层实现的逻辑,导致list的append和pop在数据量大的情况下,比set的remove和add的方法耗时大的结果?
但自己还是不确定,请各位大佬帮忙解释一下。
相关推荐
基于python的列表list和集合set操作
以下是一些python的list和set的基本操作 1. list的一些操作 list = [1, 2, 3] list.append(5) print(list) list.extend([7, 8]) # extend是将可迭代对象的元素依次加入列表 print(list) list.append([7, 8]) # append是把传入的参数当成一个元素加入列表 print(list) list.reverse() # 元素翻转,注意不能将这个操作赋给一个变量,此操作是对list本身操作,即list自身发生变化 # l=list.reverse() l为空,没有得到list翻转后的值
关于Python元祖,列表,字典,集合的比较
定义 方法 列表 可以包含不同类型的对象,可以增减元素,可以跟其他的列表结合或者把一个列表拆分,用[]来定义的 eg:aList=[123,’abc’,4.56,[‘inner’,’list’],7-9j] 1.list(str):将str转换成list类型,str可以使字符串也可以是元组类型 2.aList.append(‘test’):追加元素到列表中去 3.del aList[1]:删除列表中下标为1的元素 del aList:删除整个列表 4.cmp(list1,list2):比较两个列表的大小 5.len(list):返回列表元素个数 6.sorted(list):使用字典序对列
Python列表和元组的定义与使用操作示例
主要介绍了Python列表和元组的定义与使用操作,结合实例形式分析了Python中列表和元组的功能、区别、定义及使用方法,需要的朋友可以参考下
python学习笔记(二)之元组,集合,列表,字典的概念和区别(四)
集合 set一:基本概念1.1 定义1.2 初始化集合二:集合的特性2.1 去重2.2 成员操作符2.3 for循环2.4 枚举三:常用方法3.1 增3.2 删3.3 排序3.4 关系测试3.4.1 并集3.4.2 交集3.4.3 差集3.4.4 对称集3.4.5 子父集3.4.6 判断相交 一:基本概念 1.1 定义 set存储元素不重复、无序数据类型。 1.2 初始化集合 1.2.1 初始化空集合或带值集合: 集合名=set( [ ] ) 1.2.2 初始化空集合: 集合名=set() 1.2.2 初始化包含值的集合: 集合名={数据1,数据2} emptySet=set() empt
python 如何快速找出两个电子表中数据的差异
下面小编就为大家带来一篇python 如何快速找出两个电子表中数据的差异。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧


