Python基础(一)---【06】下标、切片、字符串常见操作

下标、切片

早晨去上班,由于路上堵车,只能在公司楼下的超市买奥利奥吃~~

但是正在减肥,从左边数到右边一共6个【我也不知道是不是有6个】,你给所有的饼干都编号,左边开始【1,2,3。。。6】

  • 下标

下标:即饼干的编号。

但是,程序中下标【索引】都是从0开始,也就是说程序中:饼干的编号是【0,1,2,3,4,5】

示意图:

饼干(个)abcdef
下标012345

想吃饼干的时候,从第一个开始拿就可以了。。。

当然,想吃哪个在哪个位置拿就可以了。。。

在程序中怎么取呢?

>>> str =  "12345"
>>> print(str[0])
1
>>> print(str[1])
2

也就是说,我们程序中通过下标去获取所对应的字符

  • 切片

但是,我不想吃第一个饼干,只想吃中间2,3位置的,我直接拿就可以了

程序中怎么实现呢?

>>> str =  "12345"
>>> print(str[1:3:1])
23
>>>

切片的语法:[起始:结束:步长]

  • 起始:从哪个位置开始
  • 结束:想取哪个元素的位置+1
  • 步长:是一个挨着一个还是隔一个取一个【默认为一个挨着一个】

注意:选取的区间属于左闭右开型,即从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身)。

代码示例:

>>> str ="12345"
>>> print(str[0:4:])
1234
>>> print(str[0:5:])
12345
>>> print(str[0:5:1])
12345
>>> print(str[0:5:2])
135
>>> print(str[0:5:3])
14
>>>

但是,我想了想,不从中间,也不从第一个开始,我从最后一个开始~

>>> str = '12345'
>>> print(str[::-1])
54321
>>>

吃了两个发现不能吃了,减肥~~

>>> print(str[:-3:-1])
54
>>>

代码示例:

>>> str = '12345'
>>> print(str[0:2]) #   取下标0、1的字符
12
>>> print(str[0:4]) #   取下标0~3的字符
1234
>>> print(str[1:]) #   取下标从1开始到最后的字符
2345
>>> print(str[1:-1]) #   取下标1开始到最后一个之间的字符
234
>>> print(str[::-1]) #   从最后一个开始取
54321
>>> print(str[-1:]) #   取最后一个
5
>>>

思考

怎么取出数字为432呢?

>>> str = '12345'
>>> print(str[-2:-5:-1])
432
>>>

字符串常见操作

  • find

    本人比较随和,东西放的比较随心所欲,这就造成了找东西的时候找不到,很尬尴~~

    那么,程序中,怎么在茫茫的abcd组合中找到想要的字符就是一个关键问题了~~

    假设有字符串:word = "i am shuaige,everyone thinks so!"

    >>> word = "i am shuaige,everyone thinks so"
    >>> word.find("shuaige")
    5
    >>> word.find("shuaige",6,len(word))    #   len()查看字符串的长度
    -1
    >>>
    
    • 上面的两段代码为什么返回的数字一个是5另一个是-1呢?!

      • 检测 shuaige 是否包含在word中,如果是返回开始的索引值【空格也占一个字符】,否则返回-1
      • 第一个find是在整个字符串中查找
      • 第二个find是在下标为6的地方到字符串的结尾查找
  • index

    跟find()方法一样,不过如果要找的字符串不在word中会报错~

    >>> word = "i am shuaige,everyone thinks so"
    >>> word.index("shuaige")
    5
    >>> word.index("shuaige",6,len(word))
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: substring not found
    >>>
    
  • count

    使用同find方法

    >>> word = "i am shuaige,everyone thinks so"
    >>> word.count("o")
    2
    >>> word.index("o",6,len(word))
    18
    >>> len(word)
    31
    
  • replace【替换】

    格式:

    字符串.replace(要替换的字符,用哪个字符替换,替换不超过多少次【<=】)

    >>> word = "i am shuaige,everyone thinks so"
    >>> word.replace("o","A",1)
    'i am shuaige,everyAne thinks so'
    >>> #   如果不写次数,那么将会替换所有的字符
    >>> word.replace("a","B")
    'i Bm shuBige,everyone thinks so'
    >>>
    
  • split【切片】

    格式:

    split("切割符",[次数]) # []为可选参数

    返回一个列表

    >>> word = "i am shuaige,everyone thinks so"
    >>> word.split(" ") # 默认全部切分
    ['i', 'am', 'shuaige,everyone', 'thinks', 'so']
    >>> word.split(" ",2) # 指定切分次数
    ['i', 'am', 'shuaige,everyone thinks so']
    >>>
    
  • strip:删除字符串两端的空白字符

    格式:word.strip([chars])

    chars -- 移除字符串头尾指定的字符序列。

    >>> word = '   i am shuaige,everyone thinks so!    '# 注意这两端我特意加了N多空格
    >>> word.strip(" ")
    'i am shuaige,everyone thinks so!'
    

还有接近20个没有列出【不常用】,就不一一列出了!

思考

给定一个字符串,a = "abcdefg \t hijklmn \t opqrst uvwxyz" 返回使用\t或者空格分隔的倒数第二个字符串

a = "abcdefg \t hijklmn \t opqrst uvwxyz"
a.split()

# 切分之后结果如下
['abcdefg', 'hijklmn', 'opqrst', 'uvwxyz']

#取倒数第二个
a.split()[-2:-1]
# 返回结果如下
['opqrst']
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值