为了账号安全,请及时绑定邮箱和手机立即绑定

在字符串切片中使用比较运算符

在字符串切片中使用比较运算符

慕婉清6462132 2021-11-16 15:29:23
我正在学习教程并被这个有趣的字符串切片部分卡住了。假设我有字符串 s,s='-123'并尝试使用字符串的子集,s[s[0] == '-':]在切片部分使用比较运算符 == 的目的是什么,结果字符串是什么?完整的代码在这里:def string_to_int(s):    return functools.reduce(lambda running_sum, c: running_sum * 10 +          string.digits.index(c), s[s[0] == '-':], 0) * (-1 if s[0] == '-' else 1)
查看完整描述

2 回答

?
森林海

TA贡献2011条经验 获得超2个赞

s[0] == '-'将对True-和开头的字符串求值FalseTrue具有一个数字值1False 0,所以其效果是从索引片1起当它与开始-(跳过-),或从0开始否则(跳过无关,因为不存在-)。

从本质上讲,这是-从字符串中精确地剥离一个前导的一个过于聪明的方法,如果它存在的话。


查看完整回答
反对 回复 2021-11-16
?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

让我们来看看。

s[0] == '-'

这意味着“字符串的第一个字符是“-”符号吗?在您的情况下,即True, 并且True等效于1.

如果将其替换为一个,则可以更好地理解:

s[1:]

所以它将返回除第一个字符之外的所有字符串。

但 !如果是False,就像 in s = "+123",那么 asFalse等价于0,它将返回整个字符串。


查看完整回答
反对 回复 2021-11-16
  • 2 回答
  • 0 关注
  • 175 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信