草庐IT

python - python中的len()和sys.getsizeof()方法有什么区别?

当我运行以下代码时,我分别得到3和36作为答案。x="abd"printlen(x)printsys.getsizeof(x)谁能给我解释一下它们之间有什么区别? 最佳答案 它们根本不是一回事。len()查询容器中包含的项目数。对于字符数的字符串:Returnthelength(thenumberofitems)ofanobject.Theargumentmaybeasequence(string,tupleorlist)oramapping(dictionary).sys.getsizeof()另一方面返回对象的内存大小:Retu

python - 为什么 Python 的 'len' 函数比 __len__ 方法快?

在Python中,len是一个通过调用对象的__len__方法来获取集合长度的函数:deflen(x):returnx.__len__()所以我希望直接调用__len__()至少和len()一样快。importtimeitsetup=''''''print(timeit.Timer('a="12345";x=a.__len__()',setup=setup).repeat(10))print(timeit.Timer('a="12345";x=len(a)',setup=setup).repeat(10))Demolink但是用上面的代码测试结果显示len()更快。为什么?

python - 如何在不修改类的情况下使 len() 在类的不同实例上使用不同的方法?

有没有办法让len()在不修改类的情况下使用实例方法?我的问题示例:>>>classA(object):...pass...>>>a=A()>>>a.__len__=lambda:2>>>a.__len__()2>>>len(a)Traceback(mostrecentcalllast):File"",line1,inTypeError:objectoftype'A'hasnolen()注意:A的不同实例将附加不同的__len__方法我无法更改类A 最佳答案 没有。Python总是通过对象的类查找特殊方法。这有几个很好的理由,一个是

python - 使用 len() 和 def __len__(self) : to build a class

只是好奇,在构建类时使用len()或def__len__()有什么区别(优点和缺点)?哪种Python风格最好?classfoo(object):def__init__(self,obs=[])self.data=obsself.max=max(obs)self.min=min(obs)self.len=len(obs)或classfoo(object):def__init__(self,obs=[])self.data=obsself.max=max(obs)self.min=min(obs)def__len__(self):returnlen(self.data)

python - 'map' 类型的对象在 Python 3 中没有 len()

我在使用Python3时遇到问题。我获得了Python2.7代码,目前我正在尝试更新它。我得到了错误:TypeError:objectoftype'map'hasnolen()在这部分:str(len(seed_candidates))在我这样初始化它之前:seed_candidates=map(modify_word,wordlist)那么,谁能解释一下我必须做什么?(编辑:以前这个代码示例是错误的,因为它使用set而不是map。现在已经更新。) 最佳答案 在Python3中,map返回一个map对象而不是list:>>>L=ma

python - 为什么 Pandas 内连接会给出 ValueError : len(left_on) must equal the number of levels in the index of "right"?

我正在尝试将DataFrameA内部连接到DataFrameB并遇到错误。这是我的加入声明:merged=DataFrameA.join(DataFrameB,on=['Code','Date'])这是错误:ValueError:len(left_on)mustequalthenumberoflevelsintheindexof"right"我不确定列顺序是否重要(它们不是真正“有序”的吗?),但以防万一,DataFrame的组织方式如下:DataFrameA:Code,Date,ColA,ColB,ColC,...,ColG,ColH(shape:80514,8-noindex)Da

python - 是否需要范围(len(a))?

人们经常在关于SO的python问题中找到这种类型的表达式。要么只是访问可迭代的所有项目foriinrange(len(a)):print(a[i])这只是一种笨拙的写法:foreina:print(e)或分配给可迭代的元素:foriinrange(len(a)):a[i]=a[i]*2应与以下内容相同:fori,einenumerate(a):a[i]=e*2#Orifitisn'ttooexpensivetocreateanewiterablea=[e*2foreina]或用于过滤索引:foriinrange(len(a)):ifi%2==1:continueprint(a[i])

Python:Python 列表是否对 len() 进行计数,还是对每次调用都进行计数?

如果我一直在一个很长的列表上调用len(),我是在浪费时间,还是在后台保留一个int计数? 最佳答案 别担心:它当然会保存计数,因此列表上的len()是一个非常便宜的操作。顺便说一句,字符串、字典和集合也是如此! 关于Python:Python列表是否对len()进行计数,还是对每次调用都进行计数?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/699177/

python - Django QuerySet 上的计数与 len

在Django中,鉴于我有一个QuerySet我要迭代并打印其结果,那么计算对象的最佳选择是什么?len(qs)或qs.count()?(同时考虑到在同一迭代中计算对象不是一种选择。) 最佳答案 虽然Djangodocs推荐使用count而不是len:Note:Don'tuselen()onQuerySetsifallyouwanttodoisdeterminethenumberofrecordsintheset.It'smuchmoreefficienttohandleacountatthedatabaselevel,usingS

python - len() 和 .__len__() 之间的区别?

调用len([1,2,3])或[1,2,3].__len__()有什么区别吗?如果没有明显的区别,那么在幕后做了什么不同的事情? 最佳答案 len是一个获取集合长度的函数。它通过调用对象的__len__方法来工作。__something__属性比较特殊,通常不会让人眼前一亮,一般不应该直接调用。在很久以前的某个时候决定获取某个东西的长度应该是一个函数而不是方法代码,原因是len(a)的含义对初学者来说很清楚,但a.len()不会那么清楚。当Python开始时,__len__甚至还不存在,而len是一种特殊的东西,可以处理几种类型的对