python笔记(1)[1:], [:1], [-1:], [:-1], [::-1], [1::-1], [:-n], [-n:]...的含义

[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取值。

如有疑问,欢迎留言询问。

  • 22
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值