zoukankan      html  css  js  c++  java
  • python基本数据类型之字符串(五)

    python基本数据类型之字符串(五)

    遍历与查找

    python中的字符串属于可迭代对象,通过一些方法可以遍历字符串中的每一个字符。而查找的方法主要有两个:find与index。

    1、字符串的遍历
    字符串的遍历可以使用for循环。

    s = 'goodhappynewyear'
    li = []
    for item in s:
        li.append(item)
    print(li)
    

    打印结果:

    ['g', 'o', 'o', 'd', 'h', 'a', 'p', 'p', 'y', 'n', 'e', 'w', 'y', 'e', 'a', 'r']
    

    既然字符串可以被遍历,那么它应该是有长度的。获取字符串长度可以使用内置方法len()。

    v = len(s)
    print(v)
    

    打印结果:16
    需要注意的是,python2与python3中的len()方法是不一样的。python2中的len()方法获取的是字符串的字节个数,而python3中len()方法获取的字符个数。
    另一种遍历字符串的方法是利用索引。字符串中的每个字符都是可以通过索引进行访问的。例如:

    print(s[0])
    print(s[-1])
    

    打印结果:g r
    索引是从[0]开始的,默认最后一个字符的索引是[-1]。利用索引和range()方法,我们同样也可以遍历字符串。

    s = 'hello'
    for i in range(len(s)):
        print('s[' + str(i) + ']=' + s[i], end='	')
    

    打印结果:

    s[0]=h	s[1]=e	s[2]=l	s[3]=l	s[4]=o	
    

    range方法
    range方法的作用生成一定范围内的序列,这是python中重要的内置方法之一。该方法有两个版本:

    1. range(stop):需要一个参数,指定数字范围的最大值;
    2. range(start,stop,step):start指定数字范围的最小值,stop指定数字范围的最小值,step指定步长。这个范围包含start,但不包括stop,包含在内的最大值为stop-1。

    示例如下:

    li = []
    for i in range(10):
        li.append(i)
    print(li)
    

    打印结果:

    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    

    另一个示例:

    li = []
    for i in range(3, 13, 2):
        li.append(i)
    print(li)
    

    打印结果:

    [3, 5, 7, 9, 11]
    

    python2与python3中的range方法在利用内存的方式上存在着不同。python2中,range方法生成的数字序列会直接进入内存,也就是不需要遍历就可以打印出来;而python3中,range方法并不会直接将数字序列填充内存,而是需要遍历后才能进入内存。
    python3中的示例:

    print(range(15))
    print([x for x in range(15)])
    

    打印结果:

    range(0, 15)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
    

    python2中的xrange方法与python3中的range方法完全一样,也是需要遍历后才能进入内存。python3中没有xrange方法。

    2、find、rfind、index、rindex
    这三个方法都是用来查找字符串中的字符。
    rfind index与findindex基本的用法一致,只不过find和index是从左往右查找,而rfind和rindex是从右往左查找。
    find和index方法都是3个参数(str, start, end),第一参数指定要查找的子串(必填),第二、第三个参数指定查找的开始与结束位置(默认从0到最后一个),(start,end)的设置与切片一致,即包含start而不包含end。

    s = 'enfkejoeapjomdeep'
    v = s.find('ee',6) # 当仅传入一个参数时,默认为指定start.
    print(v)
    

    打印结果:14

    s = 'enfkejoeapjomdeep'
    v1 = s.rindex('jo',3,12)
    print(v1)
    

    打印结果:10
    不论是从左(find、index)还是从右(rfind、rindex)查找,结果都会返回找到的第一个子串的索引,而find与index的区别在于,如果要查找的子串不在字符串中,find方法会返回-1,而index方法则会报错。所以,在实际运用中,建议选择find方法。

  • 相关阅读:
    OSX 10.8+下开启Web 共享 的方法
    OSX 10.8+下开启Web 共享 的方法
    OSX 10.8+下开启Web 共享 的方法
    ★如何解释特修斯之船问题?
    ★如何解释特修斯之船问题?
    ★如何解释特修斯之船问题?
    JS中event.keyCode用法及keyCode对照表
    JS中event.keyCode用法及keyCode对照表
    JS中event.keyCode用法及keyCode对照表
    用webgl打造自己的3D迷宫游戏
  • 原文地址:https://www.cnblogs.com/guyexiangyun/p/10209014.html
Copyright © 2011-2022 走看看