java⾥如何取元素个数_如何获取列表中的元素数量?考虑以下:
items = []
items.append("apple")
items.append("orange")
items.append("banana")
# FAKE METHOD:
items.amount() # Should return 3
如何获取列表items的元素数?
#1楼
虽然由于“开箱即⽤”功能在意义上更有意义,所以这可能没有⽤,但是⼀个相当简单的技巧是⽤length属性构建⼀个类:
class slist(list):
@property
def length(self):
return len(self)
您可以这样使⽤它:
>>> l = slist(range(10))
>>> l.length
10
>>> print l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
本质上,它与列表对象完全相同,其附加好处是具有友好的OOP length属性。
和往常⼀样,您的⾥程可能会有所不同。
#2楼
len()函数可与Python中的⼏种不同类型⼀起使⽤-内置类型和库类型。 例如:
>>> len([1,2,3])
3
官⽅2.x⽂档在这⾥: len()
正式的3.x⽂档在这⾥: len()
#3楼
如何获得列表的⼤⼩?
要查列表的⼤⼩,请使⽤内置函数len :
items = []
items.append("apple")
items.append("orange")
items.append("banana")
现在:
len(items)
返回3。
说明
Python中的所有内容都是⼀个对象,包括列表。 在C实现中,所有对象都有某种头。
列表和其他类似的内置对象在Python中具有“⼤⼩”,尤其是具有⼀个名为ob_size的属性,其中缓存了对象中元素的数量。 因此,检查列表中对象的数量⾮常快。
来⾃⽂档
len(s)
返回对象的长度(项⽬数)。 参数可以是序列(例如字符串,字节,元组,列表或范围)或集合(例如字典,集合或冻结集合)。
len是通过数据模型docs中的 __len__实现的:
object.__len__(self)
调⽤以实现内置函数len() 。 应该返回对象的长度,即> = 0的整数。此外,考虑未定义__nonzero__() [在Python 2中为__bool__()在Python 3中]且其__len__()⽅法返回零的对象。在布尔上下⽂中为false。
我们还可以看到__len__是列表的⽅法:
items.__len__()
返回3。
内建类型可以得到len (长度)
实际上,我们看到我们可以为所有描述的类型获取此信息:
>>> all(hasattr(cls, '__len__') for cls in (str, bytes, tuple, list,
xrange, dict, set, frozenset))
True
请勿使⽤len测试空列表或⾮空列表
当然,要测试特定长度,只需测试是否相等:
if len(items) == required_length:
...
但是在测试零长度列表或反数列表时有⼀种特殊情况。 在这种情况下,请勿测试是否相等。
另外,请勿执⾏以下操作:
if len(items):
...
相反,只需执⾏以下操作:
if items: # Then we have some items, not empty!
...
要么
if not items: # Then we have an empty list!
...
我在这⾥解释原因,但简⽽⾔之,⽆论是if items还是if not items都更具可读性和性能。
#4楼
通过前⾯给出的⽰例来回答您的问题:
items = []
items.append("apple")
items.append("orange")
java调用python模型items.append("banana")
print items.__len__()
#5楼
除了len之外,您还可以使⽤operator.length_hint (需要Python 3.4+)。 对于普通list两者都是等效的,但是length_hint使得可以获取列表迭代器的长度,这在某些情况下可能很有⽤:
>>> from operator import length_hint
>>> l = ["apple", "orange", "banana"]
>>> len(l)
3
>>> length_hint(l)
3
>>> list_iterator = iter(l)
>>> len(list_iterator)
TypeError: object of type 'list_iterator' has no len()
>>> length_hint(list_iterator)
3
但是length_hint从定义上来说只是⼀个“提⽰”,因此在⼤多数情况下len更好。
我已经看到⼀些建议访问__len__答案。 在处理诸如list类的内置类时,这是可以的,但是由于len (和length_hint )实现了⼀些安全检查,因此可能导致⾃定义类出现问题。 例如,两者都不允许负长度或超过某个值( sys.maxsize值)的长度。 因此,使⽤len函数⽽不是__len__⽅法总是更安全!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论