与Python范围和列表索引混淆
我仍然是python世界的初学者,这是让我回头的原因之一。。是内置的与Python范围和列表索引混淆,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我仍然是python世界的初学者,这是让我回头的原因之一。。是内置的范围和列表索引 我怎么知道这个范围会不会占用最后一个号码 比如说 范围(15)它会数到15还是14 范围(1,15)它会数到15还是14 List_1[:15]它将计数到16(最后一个元素)还是静止在15(之前的元素) list_1[1::][/code>假设列表是16个项目,它会算到最后一个元素吗 List\u 1[1:15]它将计入最后一个元素还是之前的元素 列表拼接: a = "hello" # there are 5
范围和列表索引
我怎么知道这个范围会不会占用最后一个号码
比如说
范围(15)
它会数到15还是14
范围(1,15)
它会数到15还是14
List_1[:15]
它将计数到16(最后一个元素)还是静止在15(之前的元素)
list_1[1::][/code>假设列表是16个项目,它会算到最后一个元素吗
List\u 1[1:15]
它将计入最后一个元素还是之前的元素李>
列表拼接:
a = "hello" # there are 5 characters, so the characters are accessible on indexes 0..4
a[1] = 'e'
a[1:2] = 'e' # because the number after the colon is not reached.
a[x:y] = all characters starting from the character AT index 'x' and ending at the character which is before 'y'
a[x:] = all characters starting from x and to the end of the string
将来,如果您想知道python的行为是什么样的,您可以在python shell中进行尝试。只需在终端中键入python,您就可以输入您想要的任何行(尽管这对于单行程序而不是脚本来说非常方便)。澄清此类疑问的最佳方法是使用REPL:
>>> range(10)
range(0, 10)
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> x = list(range(10))
>>> x[:3]
[0, 1, 2]
>>> x[:1]
[0]
>>> x[1:10]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
好吧,这里有一个关于先前答案的散文版本
范围(15)
实际上生成了一个索引从0到14的列表
范围(0,15)
也会这样做;除非同时指定了起始索引和结束索引
list[:14]
访问list
的内容,包括第14个索引(第15个元素)
list[1:][/code>从第一个索引(第二个元素)到(包括)最后一个元素访问list
的内容
请阅读文档,尝试将它们放入python并打印出来!您应该将切片索引视为图轴上的细记号,第一个项目前有一个记号,每对项目之间有一个记号,最后一个项目后有一个记号。结果是比项目多打一个勾。对于“abc”,结果将是“0a1b2c3”。Seq[m:n]包括标记m和n之间的n-m项。在切片坐标中,项目索引将是.5、1、5、2.5、。有些语言舍入到0,1,2,…,其他语言舍入到1,2,3。谢谢Terry的解释一个完全的初学者不会知道REPL是什么-我只是在谷歌上搜索了一下。在你的程序中玩它不是更容易吗?@MarijkeVonk REPL是即时的,在您的程序中,您仍然需要打印语句并每次单击“运行”按钮以获取回复您的意思是它将始终保留最后一个元素?范围是半开的->最后一个元素从不包含感谢您的回复。。但是在列表中,正如我从你的回复中所理解的那样,a[a:b]将包括从a到blist[:14]之前的最后一个元素。
将访问索引0到13,而不是第14个索引。
>>> range(10)
range(0, 10)
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> x = list(range(10))
>>> x[:3]
[0, 1, 2]
>>> x[:1]
[0]
>>> x[1:10]
[1, 2, 3, 4, 5, 6, 7, 8, 9]