希望可以统计变量类型列表中字符串的数量,如果可能的话不使用循环:
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)])
这仅计算字符串。这是浪费的,因为它在内存中构建了一个完整的列表。没有干净利落地获取生成器长度的方法,但有一些技巧。
sum(isinstance(v, str) for v in k)
True
值的数量,因此也是字符串的数量。感谢 vaultah 评论中的澄清。sum(isinstance(v, str) for v in k)
,这应该至少是内存有效的。 - vaultah我的解决方案可能有点繁琐,但这是我的尝试
l = [1,2,3,'a','b']
将列表中的所有元素连接成一个字符串
ll = ''.join(map(str,l))
然后对它进行计数
letters = sum(c.isalpha() for c in ll)
[1,2,3,'a','ab']
返回了 3
,这可能不是预期的行为。另外,你的意思是 ll = ''.join(map(str,l))
,对吗? - frederick99
list(map(type, l)).count(str)
的作用是计算列表l中类型为str的元素个数,但使用循环更加清晰简洁。 - vaultahsum(1 for x in l if type(x) == str)
。如果您想要创建一个列表,则可以使用sum([1 for x in l if type(x) == str])
。 - shahkalpesh