Python 计算变量类型列表中的字符串数,如果可能则不使用循环
Python count number of strings in a list of variable types, without loop if possible
想要计算变量类型列表中的字符串数,如果可能的话不使用循环:
l = [1,2,3,'a','b']
c = l.count(str)
print (c)
输出:
0
预期输出:
2
由于 Guido 不是 map
和 filter
的忠实粉丝,我将给出一个避免它们的答案:
len([v for v in k if isinstance(v, str)])
这只计算字符串。这是浪费,因为它在内存中构建了一个完整的列表。没有办法清楚地获得生成器的长度,但是有 hack。
sum(isinstance(v, str) for v in k)
这是有效的,因为布尔值的总和是 True
值的数量,所以它是字符串的数量。感谢 vaultah 的评论进行澄清。
我的解决方案可能有点乏味,但这是我的尝试
l = [1,2,3,'a','b']
将列表的所有元素连接到一个字符串中
ll = ''.join(map(str,l))
然后数一数
letters = sum(c.isalpha() for c in ll)
想要计算变量类型列表中的字符串数,如果可能的话不使用循环:
l = [1,2,3,'a','b']
c = l.count(str)
print (c)
输出:
0
预期输出:
2
由于 Guido 不是 map
和 filter
的忠实粉丝,我将给出一个避免它们的答案:
len([v for v in k if isinstance(v, str)])
这只计算字符串。这是浪费,因为它在内存中构建了一个完整的列表。没有办法清楚地获得生成器的长度,但是有 hack。
sum(isinstance(v, str) for v in k)
这是有效的,因为布尔值的总和是 True
值的数量,所以它是字符串的数量。感谢 vaultah 的评论进行澄清。
我的解决方案可能有点乏味,但这是我的尝试
l = [1,2,3,'a','b']
将列表的所有元素连接到一个字符串中
ll = ''.join(map(str,l))
然后数一数
letters = sum(c.isalpha() for c in ll)