python切片的对象_Python 对象切片

对对象进行切片

s[a:b:c] 的形式对 s 在 a 和 b 之间以 c 为间隔取值。 c 的值还可以为负, 负值意味着反向取值。

>>> s = 'bicycle'

>>> s[::3]

'bye'

>>> s[::-1]

'elcycib'

>>> s[::-2]

'eccb'

前面取出卡牌中所有 'A'

>>> deck[12::13]

[Card(rank='A', suit='spades'), Card(rank='A', suit='diamonds'),

Card(rank='A', suit='clubs'), Card(rank='A', suit='hearts')]

对 seq[start:stop:step] 进行求值的时候, Python 实际会调用 seq.__getitem__(slice(start, stop, step))。用 [] 中来返回一个切片对象。

纯格式化文本的切片:

# a:b:c 这种用法只能作为索引或者下标用在 [] 中来返回一个切片对象:

# slice(a, b, c)。

# 对seq[start:stop:step] 进行求值的时候, Python 会调用

# seq.__getitem__(slice(start, stop, step))。

# 使用切片对象

invoice = """

0.....6................................40........52...55........

1909 Pimoroni PiBrella $17.50 3 $52.50

1489 6mm Tactile Switch x20 $4.95 2 $9.90

1510 Panavise Jr. - PV-201 $28.00 1 $28.00

1601 PiTFT Mini Kit 320x240 $34.95 1 $34.95

"""

SKU = slice(0, 6)

DESCRIPTION=slice(6,40)

UNIT_PRICE=slice(40,52)

QUANTITY=slice(52,55)

ITEM_TOTAL=slice(55,None)

line_items=invoice.split('\n')[2:]

for item in line_items:

print(item[UNIT_PRICE],item[DESCRIPTION])

切片赋值

l=list(range(10))

print(l) # [0,1,2,3,4,5,6,7,8,9]

print(l[2:5]) # [2,3,4]

l[2:5]=[11,12,13]

print(l) # [0,1,11,12,13,5,6,7,8,9]

del l[2:5]

print(l) # [0,1,5,6,7,8,9]

print(l[3::2]) # [6,8]

l[3::2]=[100,99]

print(l) # [0,1,5,100,7,99,9]

# l[3::2]=88 TypeError: must assign iterable to extended slice

# l[3::2]=[88] #ValueError: attempt to assign sequence of size 1 to extended slice of size 2

# 如果赋值的对象是一个切片, 那么赋值语句的右侧必须是个可迭代

# 对象。 即便只有单独一个值, 也要把它转换成可迭代的序列。

l[0]=123

l[3:]=[88] # [88]可替换连续多个值

print(l)

l[1:]=[] # 保留第一个元素,删除其余元素

print(l)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值