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

2024-03-28 11:27:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我是按照一个教程,并被困在这个有趣的字符串切片部分。假设我有弦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)

Tags: to字符串代码目的reducestringreturndef
2条回答

让我们看看。你知道吗

s[0] == '-'

这意味着“字符串的第一个字符是“-”符号吗?在您的例子中,这是TrueTrue等价于1。你知道吗

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

s[1:]

因此它将返回除第一个字符以外的所有字符串。你知道吗

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

对于以-开头的字符串,s[0] == '-'将计算为True,否则为FalseTrue的数值为1False0,因此效果是从索引1开始从-开始切片(跳过-),否则从0开始切片(因为没有-,所以不跳过任何内容)。你知道吗

从本质上讲,这是一种非常聪明的方法,可以从字符串中完全去掉一个前导-(如果存在的话)。你知道吗

相关问题 更多 >