1
hsfzxjy 2018-11-21 12:20:18 +08:00 via Android 1
如果你想从某个位置切开一个字符串,就可以不用考虑加减一的问题
```python s = 'abcdef' p = s.index('c') left, right = s[:p], s[p:] ``` |
2
GeruzoniAnsasu 2018-11-21 12:22:20 +08:00
C 没有 slice,没有[0:3]这种写法,每一个下标都对应那唯一一个位置
slice 是左开右闭区间, (好处是循环迭代都是先验边界再进循环体,右闭在自增时能保证被迭代变量最终不会越界,顺带一提从 0 开始的索引也是为了自减时类似效果,顺带一提这点在初学编程时应该能感觉到) matlab 的索引规则跟大多数编程语言不同 还有啥问题 |
3
GeruzoniAnsasu 2018-11-21 12:23:21 +08:00
说反了 左闭右开
|
4
Eleflea 2018-11-21 12:30:53 +08:00 1
python 里的 slice 和 range 都是包括左闭右开。
一是这样做有:`s = s[:i] + s[i:]` 二是 slice 的长度可以通过左右索引之差简单的算出来。 |
5
lniwn 2018-11-21 13:02:18 +08:00 3
《流畅的 Python 》一书第 2.4.1 节对这个问题有解释,大致说了如下几个方面:
上面提到的延伸阅读<http://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html> |
6
ClutchBear 2018-11-21 13:10:24 +08:00
![]( )
我觉得试一下跟容易理解 |
7
no1xsyzy 2018-11-21 14:28:53 +08:00
One way to remember how slices work is to think of the indices as pointing between characters, with the left edge of the first character numbered 0. Then the right edge of the last character of a string of n characters has index n, for example:
+---+---+---+---+---+---+ | P | y | t | h | o | n | +---+---+---+---+---+---+ 0 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1 <https://docs.python.org/3/tutorial/introduction.html#strings> |
8
ddzzhen 2018-11-21 15:58:19 +08:00 via Android
题主想的挺多也挺好,我是强记的,左闭右开
|
9
Outliver0 2018-11-22 08:36:24 +08:00
你会发现 random.randint 就包含声明数字了,嘿嘿
|