[n: ]
[n: ]意思是取列表中第n项(从0数起)到最后一项,包含第0项和最后一项
exp:
x = [0,1,2,3,4,5,6,7,8,9]
y = x[0:]
z = x[3:]
print(x)
print(y)
print(z)
result:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[3, 4, 5, 6, 7, 8, 9]
so if x.shape = h
then x[n:].shape = h-n
[: n]
[: n ]意思是取列表中第0项(从0数起)到第n项,包含第0项,不包含第n项。
exp:
x = [0,1,2,3,4,5,6,7,8,9]
y = x[:1]
z = x[:3]
print(x)
print(y)
print(z)
result:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0]
[0, 1, 2]
so if x.shape = h
then x[: n].shape = n
[-n:]
[-n: ]意思是取列表中倒数第n项(从1数起)到最后一项,包含第n项,包含最后一项。
exp:
x = [0,1,2,3,4,5,6,7,8,9]
y = x[-1: ]
z = x[-3: ]
print(x)
print(y)
print(z)
result:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[9]
[7, 8, 9]
so if x.shape = h
then x[-n: ].shape = n
[:-n]
[: -n]意思是取列表中第0项(从0数起)到倒数第n项(从1数起),包含第0项,不包含倒数第n项。
exp:
x = [0,1,2,3,4,5,6,7,8,9]
y = x[: -1]
z = x[: -3]
print(x)
print(y)
print(z)
result:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8]
[0, 1, 2, 3, 4, 5, 6]
so if x.shape = h
then x[: -n].shape = h - n
[: : n]
[: : n]意思是取列表中第0项(从0数起)到最后一项,每隔n个值(从1数起)取一次值。包含第1次取值,包含最后一次取值。
exp:
x = [0,1,2,3,4,5,6,7,8,9]
y = x[: : 1]
z = x[: : 3]
print(x)
print(y)
print(z)
result:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 3, 6, 9]
so if x.shape = h
then x[: : n].shape = 1 + int((h - 1)/n)
[: : -n]
[: : -n]意思是先将原列表的第0项到结尾倒叙排列(并不改变原列表),再取新列表中第0项(从0数起)到最后一项,每隔n个值(从1数起)取一次值。包含第1次取值,包含最后一次取值。
exp:
x = [0,1,2,3,4,5,6,7,8,9]
y = x[: : -1]
z = x[: : -3]
print(x)
print(y)
print(z)
result:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
[9, 6, 3, 0]
so if x.shape = h
then x[: : -n].shape = 1 + int((h - 1)/n)
[n: m: k]
总结一下,对于[n: m: k],先看k值是否为负。
不为负值的话,取列表的第n项(如果n为负,则是倒数第n项)到第m项(如果m为负,则是倒数第m项),每隔k次取一次值。
为负值的话,m则小于n,将原列表的m项到n项(不含)倒叙排列,再对其每隔k取值。
如有疑问,欢迎留言询问。