【问题标题】:how can i count the number of digits in a string [duplicate]我如何计算字符串中的位数[重复]
【发布时间】:2018-06-15 05:14:56
【问题描述】:

如果完整的字符串是数字,我知道 isdigit 返回 true 或 false,但我想检查字符串是否包含数字,例如“1dfsfsfs”会返回 false,但它确实包含数字。那么我应该使用哪种方法来找出答案呢?

.isdigit()

【问题讨论】:

  • 依次检查字符串中的每个字符。另见例如any() 函数,它使这样的任务更容易。
  • isdigit() 如果您的字符串不只是数字,则将始终返回 false。为什么不使用 str.count 函数?
  • 如果您只需要返回一个布尔值,您可以使用正则表达式匹配字符串\d中的任何数字

标签: python python-3.x


【解决方案1】:

用 map 和 lambda 试试这个

a= "a12345"
sum(list(map(lambda x:1 if x.isdigit() else 0,set(a))))

它会给你字符串中的数字计数

解释: set(a) -- 将字符串转换为唯一项(因为 map 函数采用迭代器或列表将其映射到函数)

lambda x:1 if x.isdigit() else 0

这个 lambda 函数帮助我们查找它是否为数字,则返回 1,否则返回 0

list(map(lambda x:1 if x.isdigit() else 0,set(a)))

这将返回类似 [0,1,1,1,1,1] 的东西

sum([0,1,1,1,1,1])

这将把列表中的所有值相加,这样你就可以找到计数

【讨论】:

  • 您的代码完全适用于我正在尝试做的事情,您能否更深入地解释一下,以便我理解?
  • 好的,我在回答中添加了希望对您有所帮助
  • 我注意到这个代码计算重复的数字有没有办法让它不重新计算已经确认的数字
  • @AngelValenzuela 在map 函数中,你可以把list(a) 换成list(set(a))
  • 使用 set(a) 无需再次转换列表集将只包含唯一值检查答案我更新了它
猜你喜欢
  • 2016-05-20
  • 1970-01-01
  • 2011-11-05
  • 1970-01-01
  • 2017-07-09
  • 1970-01-01
  • 1970-01-01
  • 2017-09-03
  • 2020-10-02
相关资源
最近更新 更多