food = ["spam", "spam", "eggs", "sausages", "spam"]
print food[2:4]
为什么只打印 eggs 和 sausages 呢?
难道不应该是index从2到4么?
print food[2:4]
为什么只打印 eggs 和 sausages 呢?
难道不应该是index从2到4么?
|
phusJan 2, 2012
1
python想达到这样的一个效果:
food[a:c] = food[a:b] + food[b:c] 所以slice的区间就是前闭后开。 |
|
guolinJan 2, 2012
2
不奇怪,习惯就好了,省掉了开闭区间的麻烦。
|
|
3
对Python各种不适应
算鸟,还是走 PHP + C# / C++ 路线吧... |
|
binuxJan 2, 2012
4
这不是正常的吗?
即使是C++ STL的copy,find JS的Array.slice 不都是这样前闭后开的吗? |
|
cmondayJan 2, 2012
5
我想问问哪门语言的子数组不是这么处理,而是像LZ说的前后都闭区间的?
|
|
MutooJan 2, 2012
6
我一开始也不适应,要是python能识别 [a,b] [a,b) (a,b] (a,b) 就好了
|
|
7
关键是Python用的这个太尼玛像数学符号…
range的话又用的小括号… |
|
ant_szJan 2, 2012
8
好好体会 simple, sometimes native 的感觉,我觉得这个感觉很好的
|
|
flyingkidJan 2, 2012
10
如果是这样,那就学习ruby吧,爽到底
|
|
alsotangJan 2, 2012
11
@clino 对啊。。怎么能因为这个而放弃一门语言呢。1L不是已经给出这么设计的道理来了吗。。。C++的stl里面,xxx.end()也是指向最后一个元素的后一个位置呢。
range是个函数,而调用函数一般都使用()括号,这个很正常嘛。习惯就好,用python比背PHP的各种函数名方便多了。 |
|
sqbingJan 2, 2012
12
当然不是,从2开始,止于4前。
|
|
13
现在主要用PHP,曾经还学过Haskell
Python的这一块和上两者一比较,用法就完全的不一样了。 |
|
ectothermJan 3, 2012
14
程序中表示切片、迭代等等都喜欢用半闭区间,也就前闭后开,这样很方便的。包括C++ STL在内的很多库都这么干。
|
|
ywjnoJan 3, 2012
15
换用ruby吧,支持前闭后开跟前闭后闭
|
|
miukalJan 3, 2012
16
既然这个语法叫切片,可以把[]里的数字理解成切的位置而不是元素索引。
比如有5个元素abcde |a|b|c|d|e| 从0位置开始一共可以切6刀,所以[2:4]就是第2刀到第4刀之间的元素c,d |
|
levnJan 3, 2012
17
drop 2 . take 4 $ the_list
|
|
1stJan 3, 2012
18
我记得Learning Python上写的就是这个意思。RT @miukal: 既然这个语法叫切片,可以把[]里的数字理解成切的位置而不是元素索引。
比如有5个元素abcde |a|b|c|d|e| 从0位置开始一共可以切6刀,所以[2:4]就是第2刀到第4刀之间的元素c,d |
|
clinoJan 9, 2012
21
|
|
SkyFvckerJan 31, 2012
23
LZ孤陋寡闻被各楼鄙视。。。
|
|
yy77Jan 31, 2012
24
irb(main):005:0> food = ["1","2","3","4","5"][2..4]
=> ["3", "4", "5"] |
|
sandhatFeb 2, 2012
25
一个关于前闭后开的传说~
|