2014-11-01 61 views
0

我基本上是一个PHP程序员,我试图解释一个简单的线条在Python:与数组索引+ 1蟒蛇拼接语法:

thekey = data['k'][data['k'].index(':') + 1:] 

我越来越困惑的+ 1:。在PHP中data['k'].index(':')':'array_search,但我越来越困惑的+ 1:

+0

我们需要更多信息。什么存储在'data'中? – mdml 2014-11-01 21:45:41

+0

plz分享也输入 – Hackaholic 2014-11-01 21:46:00

+0

你确定这是对的吗?同时做'data ['k']'和'data [...:]'是不常见的。它可能是'data ['k'] [data ['k']。index(':')+ 1:]'? – BrenBarn 2014-11-01 21:52:04

回答

1

+ 1:是不是在这里的单位。 + 1是切片开始的一部分,并且:是将开始与结束分开的部分。在Python中,some_list[start:end]意味着“some_list开始于(包括)开始并且一直到(但不包括)结束”的元素。 some_list[start:]的意思是“元素从头开始,一路走到列表末尾”。

您可以通过思维的代码这种方式获得更好的理解:

thekey = data['k'][ (data['k'].index(':')+1) : ] 

整个位data['k'].index(':')+1是给片的起点的表达(在这种情况下,第一个冒号后的右侧位置在data['k'])。所以这意味着“在第一个结肠后给我所有的data['k']”。

+0

是的,抱歉...数据['k'] [(data ['k'] .index(':')+ 1):]是正确的 – user1217974 2014-11-01 21:55:36

2

这意味着首先你搜索使用.index()方法:第一次出现,然后进行单从位置开始片发生之后直到列表的末尾。

2

是的这是一个相当混乱的代码。

拼接语法如下:

[start:end] 

当最终被留为空白,它抓住一切直到数据的结尾,因为在这种情况下。

+ 1仅仅是对data['k'].index(':')调用的结果加1,最后的冒号:是拼接操作符。这可以像下面这样扩大了可读性:

x = data['k'].index(':') 
thekey = data['k'][x+1 : ] 

正如评论所说,它真的会更容易,如果你给我们的数据的内容来回答这个问题。

Further reading.