《从零开始学 Python 》一书, s = HelloWorld! s[1:5]输出结果是 ello #这里[1:5]是第一个到第五个之间字符么? 为什么不包括第 5 个字符?
list = ['abc', 789, 2.23, 'join', 70.2] print(list[1:3])输出结果是[789,2.23] #这里[1:3]是第一个到第三个字符,这里怎么不是之间啊?
所以问题是这个封号:到底是怎么回事?
谢谢
《从零开始学 Python 》一书, s = HelloWorld! s[1:5]输出结果是 ello #这里[1:5]是第一个到第五个之间字符么? 为什么不包括第 5 个字符?
list = ['abc', 789, 2.23, 'join', 70.2] print(list[1:3])输出结果是[789,2.23] #这里[1:3]是第一个到第三个字符,这里怎么不是之间啊?
所以问题是这个封号:到底是怎么回事?
谢谢
|
hyyou2010Sep 22, 2016
1
我的理解是,[a:b]表示第 a 个到第 b-1 个元素,注意从 0 开始计数
所以 list[1:3]指第 1 、 2 个元素 |
|
jmc891205Sep 22, 2016
2
[1:5]是第二个到第六个之间
[1:3]是第二个到第四个之间 |
|
Ge4LosSep 22, 2016
3
这书没告诉你切片的语法么? 为什么不选择右侧的书做为参考。
你那两个列表都是对的,:后面的下标不包含在输出的切片中。 |
|
Arnie97Sep 22, 2016 via Android
4
左闭右开区间,等于 C 语言里
for (i=1; i<3; i++); |
|
LonelySep 22, 2016 via iPhone
5
左闭右开
|
|
arischowSep 22, 2016
6
0. 与你一般的习惯不同, 0 才是 1
1. 因为类型不一样 s = 'HelloWorld!' 这个是 str 类型, 即字符串 list_ = ['abc', 789, 2.23, 'join', 70.2] 这个是 list 类型,即列表 所以 s[1:5],是取字符串 s 的第 2 个到第 6-1 个元素(这里的元素是以字符为单位),所以是 'ello' 而 list_[1:3],这里的元素是以每一个元素(数据项(可以是各种类型,包括 list ))为单位,所以是取第 2 个到第 4-1 个元素,所以是 [789,2.23] ==================== 另外我觉得笨方法学 Python ,有点绕,廖雪峰老师的教程看一遍不错。 |
|
arischowSep 22, 2016
8
|
|
chipmuckSep 22, 2016
9
|
|
RitchieLeeSep 22, 2016 via Android
10
我感觉就是继承 C/C++ 的惯例,类似 [begin, end)
|
|
billleeSep 22, 2016
12
左开右闭区间
由于索引是从 0 开始计算的,所以最后一个元素的索引是 len(li) - 1, 这样 li[0, len(li)] 就刚好是整个列表。 |
|
KKKKKKSep 23, 2016 via Android
13
左闭右开这个属性在计算领域用得很广
|
|
MistwaveSep 23, 2016 via iPhone
14
slice range 都是左闭右开 多写写就熟悉了
|