[英]Python 3 - Check if digit inside a number with if comprehension
目前,这适用于我要尝试执行的操作(其中“ i”是我要检查的数字是否在“数字”中):
if str(digit) in str(i):
count += 1
但是,当我尝试使用if理解时,会得到无效的语法:
count = [count + 1 if str(digit) in str(i)]
我已经尝试过几种不同的方法,仅使用[count + = 1 if ...]和count = [count + 1 if ...]
谁能提供对此问题的一些见解?
目前,您的操作方式没有任何问题。 只是想指出这一点。 如果您只是想在一行中做到这一点,那么也许您正在寻找该解决方案。
但是要回答您的理解问题:
我想指出您在这里遇到的两个问题。
您不应尝试将其str
为str
来检查字符串中是否包含数字。 只需对要检查的字符使用isdigit即可 。
您不能以试图使用的方式来使用它。 您对理解的理解是,您正在创建一个新列表,并采用该新列表并将其分配给变量(以您的情况count
)。 这样做:
计数= [计数+ 1 ....]
确实没有多大意义。
如果您想全面理解该怎么做,应该怎么做,
遍历每个字符a
字符范围,检查它是否是一个数字:
[c.isdigit() for c in a]
现在,完成上述部分。 您的单词中所有数字的列表都将为1。 下一步是要sum
在一起的一切。 现在,需要注意的额外信息是,在对此调用sum
时,我们将丢失方括号,因为我们将改用所谓的generator expression 。
所以,说完了,做完了。 您的最终解决方案是:
a = "fjf7jjjf77773jf3j"
print(sum(c.isdigit() for c in a))
# outputs 7
列表理解(带有方括号)用于生成列表。 但是,就您而言,您实际上并未生成任何列表。 但是,如果您要编写内联if,请尝试-
count = count + 1 if str(digit) in str(i) else count
您可以只对character.isdigit()
中的布尔值求和,其中character是字符串中的每个字符。
考虑:
>>> s='abc123def456'
>>> [c.isdigit() for c in s]
[False, False, False, True, True, True, False, False, False, True, True, True]
>>> sum(c.isdigit() for c in s)
6
我不确定在这种情况下为什么要获取列表,因为在第一个示例中,您只是增加了一个名为count
的整数变量。 如果您正在寻找更细微的东西,可以尝试使用如下函数:
def count_letter_instance(string="", letter=""):
return sum([1 for x in string if x == letter])
print(count_letter_instance("hello hello hello", "h"))
print(count_letter_instance("cat cat cat", "c"))
输出:
3
3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.