Anonymous 发表于 2024-5-7 21:26:31

理解不了字符串倒序

为什么"hello"[-1]+"hello"[:-1]返回的是olleh而不是ohell?
"hello"[:-1]不是默认从左到右进行吗?
为什么"hello"[-1]+"hello"[:-2]返回值是ohell?

FishC 发表于 2024-5-7 21:26:41

哈哈,这个问题有点有趣!实际上,字符串的拼接并不是按照从左到右的顺序进行的。

在Python中,"+"操作符用于连接两个字符串。当你使用"hello"+"hello"时,实际上是创建了一个新的字符串,该字符串包含了第一个"hello"和第二个"hello"两个部分。

让我们来逐步解析一下这个过程:

1. 首先,我们有第一个字符串"hello"。
2. 然后,我们将第一个字符串与第二个字符串"hello"进行连接,得到"hellohello"。
3. 最后,得到的新字符串就是"hellohello"。

所以,+"hello"的结果是"ollehhello",而不是"ohell"。

希望这样解释能够帮助你理解字符串的拼接。如果有更多问题,请随时提问哦!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

不二如是 发表于 2024-5-7 21:50:20

在 Python 中,字符串索引和切片非常灵活,可以从正向或反向访问。

这里有几个关键点一定要搞懂(不会的去看小甲鱼Python最新版列表切片课程):


[*]负数索引:在 Python 中使用负数索引时,字符串将从后往前进行计数,其中 -1 代表字符串的最后一个字符。所以 "hello"[-1] 返回 'o'。
[*]切片操作:"hello"[:-1] 表示从字符串的开头取到倒数第一个字符之前的位置,不包括索引 -1 指定的字符。因此,它返回 "hell"(从第一个字符到倒数第一个字符前的所有字符)。

所以,当你执行 "hello"[-1] + "hello"[:-1] 时:


[*]"hello"[-1] 得到 'o'
[*]"hello"[:-1] 得到 'hell'

将这两个结果相加,就得到 'ohell'。

然而,问题中你认为会得到 'olleh' 而不是 'ohell',实际上你可能误解了表达式。

第二个表达式 "hello"[-1]+"hello"[:-1] 的确返回 'ohell'。

至于你提到的 'olleh',这将是通过另一种切片和附加顺序获得的结果。

例如,如果先取 "hello"[::-1] (这将翻转整个字符串,结果为 'olleh'),但这并不是你的表达式所做的。

对于第二个问题,关于为什么 "hello"[-1]+"hello"[:-2] 返回的是 'ohell':


[*]"hello"[:-2] 表示从字符串的开头取到倒数第二个字符之前的位置,不包括索引 -2 指定的字符。因此,它返回 "hel"。

因此,当执行 "hello"[-1] + "hello"[:-2] 时:


[*]"hello"[-1] 得到 'o'
[*]"hello"[:-2] 得到 'hel'

将这两个结果相加,就得到 'ohel'。

这里要注意,你提到返回结果为 'ohell',这可能是一个打字错误。

正确的应该是 'ohel'。

Python课程:

https://www.bilibili.com/video/BV1c4411e77t

jackz007 发表于 2024-5-7 21:59:02

本帖最后由 jackz007 于 2024-5-7 22:04 编辑

      "hello"[:-1] 的意思是对 "hello" 按从开头到尾部最后一个字符(不包括该字符)进行切片,所以,切出来应该是 "hell", 而 "hello"[-1] 则是提取字符串 "hello" 的最后那个字符 "o",所以,表达式:
"hello"[-1]+"hello"[:-1]
      形成的字符串是:
"ohell"
      而形成字符串:
"olleh"
      的表达式应该是 :
"hello"[::-1]
      或者
"hello"[-1]+"hello"[-2::-1]

isdkz 发表于 2024-5-7 22:21:40

你的问题不成立呀

1、为什么"hello"[-1]+"hello"[:-1]返回的是olleh而不是ohell?
"hello"[-1]+"hello"[:-1] 返回的就是 ohell 呀

2、"hello"[:-1]不是默认从左到右进行吗?
"hello"[:-1] 就是从左往右呀

3、为什么"hello"[-1]+"hello"[:-2]返回值是ohell?
"hello"[-1]+"hello"[:-2] 返回的是 ohel,并不是 ohell

心虚 发表于 2024-5-7 23:29:34

jackz007 发表于 2024-5-7 21:59
"hello"[:-1] 的意思是对 "hello" 按从开头到尾部最后一个字符(不包括该字符)进行切片,所以,切出 ...

那个或者那里输出是ohlel

心虚 发表于 2024-5-7 23:33:13

isdkz 发表于 2024-5-7 22:21
你的问题不成立呀

1、为什么"hello"[-1]+"hello"[:-1]返回的是olleh而不是ohell?


isdkz 发表于 2024-5-7 23:54:22

心虚 发表于 2024-5-7 23:33


{:10_249:}

你这是递归函数的执行结果,reverse_string("hello") 并不等同于 "hello"[-1]+"hello"[:-1]
页: [1]
查看完整版本: 理解不了字符串倒序