Python:slice与indices

 

slice:

  eg:

    >>>e=[0,1,2,3,4,5,6]

    >>>s=slice(2,3)

    >>>e[s]

    [2]

    slice的区间左闭右开[)

    >>>s

    slice(2,3,None)

    slice([strar,]stop[,step]),start缺少时就是0

indices:

  eg:

    >>>print(s.indices(100))

    (2,3,1)

    >>>print(s.indices(3))

    (2,3,1)

    >>>print(s.indices(2))

    (2,2,1)

    >>>e[s]

    [2]

    这个indices相当于stop的位置,只要是大于之前的stop索引,按之前的来,否则就取小索引

转载:https://www.cnblogs.com/baxianhua/p/8145324.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误通常是由于使用了无效的切片索引引起的。在Python中,切片索引必须是整数或`None`或具有`__index__`方法的对象。如果切片索引不满足这些条件,就会引发`TypeError: slice indices must be integers or None or have an __index__ method`错误。 以下是一些可能导致该错误的常见情况: 1. 将浮点数用作切片索引: ```python lst = [1, 2, 3, 4, 5] a = lst[1.5:3.5] # 错误:slice indices must be integers or None or have an __index__ method ``` 在这个例子中,切片索引1.5和3.5是浮点数,不符合切片索引的要求。 2. 将字符串用作切片索引: ```python s = "hello" a = s["h":"o"] # 错误:slice indices must be integers or None or have an __index__ method ``` 在这个例子中,切片索引"h"和"o"是字符串,不符合切片索引的要求。 3. 将布尔值用作切片索引: ```python lst = [1, 2, 3, 4, 5] mask = [True, False, True, False, True] a = lst[mask] # 错误:slice indices must be integers or None or have an __index__ method ``` 在这个例子中,切片索引是一个布尔列表,不符合切片索引的要求。 要解决这个错误,需要确保切片索引是整数或`None`或具有`__index__`方法的对象。如果切片索引不是这些类型的对象,则需要将其转换为这些类型的对象。例如: ```python lst = [1, 2, 3, 4, 5] a = lst[int(1.5):int(3.5)] # 正确:[2, 3] ``` 在这个例子中,将浮点数切片索引转换为整数切片索引,以避免`TypeError`错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值