我是按照一个教程,并被困在这个有趣的字符串切片部分。假设我有弦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:
让我们看看。你知道吗
这意味着“字符串的第一个字符是“-”符号吗?在您的例子中,这是
True
,True
等价于1
。你知道吗如果将其替换为一,则可以更好地理解:
因此它将返回除第一个字符以外的所有字符串。你知道吗
但是!如果它是
False
,就像s = "+123"
,那么False
等价于0
,它将返回整个字符串。你知道吗对于以
-
开头的字符串,s[0] == '-'
将计算为True
,否则为False
。True
的数值为1
,False
0
,因此效果是从索引1
开始从-
开始切片(跳过-
),否则从0
开始切片(因为没有-
,所以不跳过任何内容)。你知道吗从本质上讲,这是一种非常聪明的方法,可以从字符串中完全去掉一个前导
-
(如果存在的话)。你知道吗相关问题 更多 >
编程相关推荐