python一行代码得到数组中某个元素的个数
想法由来
今天写代码过程中遇到一个需求,计算一个list中数值为1的元素的个数,其中这个list的元素数值不是为0就是为1。
一开始想到的是写个方法来计算:
# 返回一个0,1数组中1的数量
def num_one(source_array):
count = 0
for x in source_array:
if x == 1:
count += 1
return count
嗯好吧,然后觉得这是最low的方法了,就在想强大的python可不可以一行代码就做到以上的效果,然后发现真的可以。
count方法描述
用到了一个python自带的count()方法,count()方法用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。
count方法语法与参数
语法:
str.count(sub, start= 0,end=len(string))
参数:
- sub – 搜索的子字符串
- start – 字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0。
- end – 字符串中结束搜索的位置。字符中第一个字符的索引为 0。默认为字符串的最后一个位置。
具体实现
把一个list转类型为string然后用count方法计算所需要的元素个数即可,代码如下:
num = str(source_array).count("1")
如果源数组是一个numpy.array类型的数组,则将其转为list后再计数:
num = str(source_array.tolist()).count("1")