list = [['hi0', 'myname23'], ['billy', 'bo3b']]
#should print [2, 1]
我试图找到解决方案,但我认为我应该使用len()
和.isalpha()
方法。有什么建议吗?
答案 0 :(得分:5)
您有一个子问题,即如何确定字符串是否包含任何数字。为此你可以尝试:
>>> s = 'myname23'
>>> any(c.isdigit() for c in s)
True
现在,您要计算列表中此条件为真的元素数量;你可以尝试这样的事情:
>>> l = ['hi0', 'myname23', 'billy', 'bo3b']
>>> sum(1 for s in l if any(c.isdigit() for c in s))
3
答案 1 :(得分:0)
您可以遍历列表并检查每个成员:
total = 0
for member in list:
if not member.isalpha():
total += 1
或更简洁
total = sum(not m.isalpha() for m in list)
其他几个笔记;你可能不应该命名任何变量list
,因为这与python使用的内置函数和类型冲突。此外,isalpha
仅在您可以保证其余字符为字母时才有效,您可以使用if any(char.isdigit() for char in member)
。
答案 2 :(得分:0)
这是一种非常基本,可读的方式来做你想要的事情:
def count(L):
answer = 0
for word in L:
hasdigit = False
for char in word:
if char.isdigit():
hasdigit = True
if hasdigit:
answer += 1
return answer
输出:
In [40]: count(L)
Out[40]: 3