美文网首页Python语言python入门教程
python基础类型(一):字符串和列表

python基础类型(一):字符串和列表

作者: 渔父歌 | 来源:发表于2018-10-26 23:31 被阅读89次

    一、字符串

    与 C语言相比,Python没有字符类型,只有字符串类型。

    Python中的字符串是用双引号或单引号包裹的一串字符。如:

    s = 'a'
    s = 'aaa'
    s = "a"
    s = "aaa"
    s = '"""'
    s = "'''"
    s = "''"''"
    

    注意到最后三个的单双引号是嵌套使用的,但是最后一个的使用方法是错误的,因为当我们混合使用两种引号时必须有一种用来划分字符串的边界,即在两边的引号不能出现在字符串当中,否则 Python解释器会报错。

    1. 截取字符串

    其他的语言中一般将截取字符串定义为一个方法,比如 C语言中的 substr方法就可以返回字符串指定位置之间的一个字串。

    但是在 Python中我们采用一种更简洁直观的方式,看如下代码:

    s = "i_am_a_sher."
    
    print('s is:', s)
    print('s[0]: ', s[0])
    print('s[1:]: ', s[1:])
    print('s[1:3]: ', s[1:3])
    print('s[1::2]: ', s[1::2])
    print('s[-1]: ', s[-1])
    print('s[-3:-1]: ', s[-3:-1])
    print('s[-3::2]: ', s[-3::2])
    
    '''
    s is: i_am_a_sher.
    s[0]:  i
    s[1:]:  _am_a_sher.
    s[1:3]:  _a
    s[1::2]:  _mase.
    s[-1]:  .
    s[-3:-1]:  er
    s[-3::2]:  e.
    '''
    
    

    在 Python中字符串被视为一个可迭代的对象,可迭代指实现了 iter接口,可以直接使用for t in object语法的对象,简单来讲可以把字符串看作一个存储字符的数组。

    所以当我们打印s[0]时会将字符串的第一个字母打印出来。

    Python还为字符串切片提供了非常便利的操作,比如:

    s[1:]表示 s中第二个及以后的所有字符。

    s[1:3]表示 s中第二个到到第四个字符之间的所有字符(包括前者但不包括后者,即包括第二个但不包括第四个)。

    s[1::2]表示从 s中第二个字符开始取,每移动两个字符取一个,所以我们取到的结果是第 2、4、6、8、10个字符。

    当给出的数字为负数时,表示从字符串的末尾开始计数,所以s[-1]表示字符串倒数第一个字符。

    这里使用 -1表示倒数第一个字符,0表示正数第一个字符(因为没有 -0)。

    ::后面的数字为正时表示从左到右计数,为负数时表示从右到左计数。

    2. 拼接字符串

    拼接字符串我们直接使用+,如:

    s_1 = 'aaa'
    s_2 = 'bbb'
    print('s_1 + s_2:', s_1+s_2)
    """
    s_1 + s_2: aaabbb
    """
    

    3.字符串的常用方法

    1. encode(str: codec)->bytes:接受一个编码字符串作为参数,返回编码后的二进制编码,

      如:s.encode('utf-8')

    2. split(str: spl)->list:一给定的字符串 spl将原字符串分割为多个字串,并返回一个字串列表

      如:s.split('_'),结果为:['i', 'am', 'a', 'sher']

    3. strip():去除字符串两端的空字符(包括换行、空格、制表符等其他不可见的符号),lstrip()rstrip()则分别去除字符串左边和右边的空字符。

    4. replace(str: old, str: new)->str:替换字符串中的某些字串,要替换的字串通过 old给出,用来替换的字串通过 new给出,如:s.replace('a', 'b')的结果为:i_bm_b_sher.

    5. join(list: l)->str:用原字符串将给定的列表拼接成一个字符串。

      如:'_'.join(['i', 'am', 'a', 'sher.'])的结果就是i_am_a_sher..

    二、列表

    Python中的列表和数组类似,不过与数组只能存储一种元素相比,一个列表中可以存储任意元素,比如:

    l = ['a', 1, ['a']]
    

    在列表 l中我们存储了三种数据类型,分别是字符串、整数和列表

    与数组相同的是,我们可以使用下表来访问列表中的元素,比如:

    l[0]   # 'a'
    l[1]   # 1
    l[2]   # ['a']
    l[3]   # IndexError
    

    同样,如果访问了一个不存在的下标,程序就会抛出 IndexError错误。

    1. 截取列表

    截取列表的操作和截取字符串的操作完全相同,可以参考截取字符串。

    2. 合并列表

    合并列表可以像拼接字符串一样使用+将两个列表合并,如:

    l_1 = [1,2,3,4]
    l_2 = [5,6,7,8]
    l_3 = l_1 + l_2
    # l_3 = [1,2,3,4,5,6,7,8]
    

    也可以使用 extend(list: l)方法将要合并的列表直接追加到原来的列表后面。

    注意:extend()方法没有返回值,这个方法直接在原来的列表上进行操作。

    3. 列表的常用方法

    1. append(any: element):向列表尾部添加一个元素

    2. insert(any: element, int: index):向列表中特定的位置插入一个元素,原来在那个位置的元素及其后面的所有元素均向后移动一个位置。

    3. index(any: element)->int:返回所给元素在列表中从左到右第一个匹配的元素的位置,若所给元素不在列表中则抛出 ValueError错误。

    4. remove(any: value):将从左到右第一个匹配的元素从列表中移除,如果所给值不在列表中则抛出 ValueError错误。

    5. sort():将列表中的元素进行排序,直接在原列表中进行操作,没有返回值。

    6. pop():从列表的右边取出一个元素,并将该元素从列表中移除。

    7. reverse():反转列表,如:

      l = [1,2,3,4,5]
      l.reverse()
      # l = [5,4,3,2,1]
      
    8. 关键字 in的使用:可以用关键字 in来判断一个元素是否在列表中,如:

      l = [1,2,3,4,5]
      1 in l # True
      6 in l # False
      #可以使用 in和 index()配合来获取元素在列表中的位置
      def indexOf(l, element):
          if element in l:
              index = l.index(element)
          else:
              index = -1
          return index
      #可以使用 in和 remove()将元素从列表中移除
      def remove(l, element):
          if element in l:
              l.remove(element)
          else:
              pass
      
      
    9. for遍历列表, 如:

      l = [1,2,3,4,5,6,7,8]
      # 如果要将 l中的元素逐个打印出来,其他的方法是:
      for i in range(len(l)):
          print(l[i])
      # 但是在 python中不需要这么麻烦
      for t in l:
          print(l)
      

    三、练习

    1. 日期格式转换

    有多种日期格式:2018/10/28、2018.10.28、20181028、2018-10-28

    现在我们需要编写一个程序将前三种格式转换为第四种格式。

    要求:

    1. 不能使用 python类库
    2. 将代码封装成一个函数:date_trans(str: date)->str接受一个字符串输入,输出第四种日期格式
    3. 需要处理不规范输入引起的错误,当遇到不规范输入时抛出 ValueError错误并给出提示

    2. 双向队列

    现有函数签名:b_pop(list: l, str: direction)

    该函数实现的功能是:当 direction的值为 'left'时从列表的左边取出一个元素返回,当 direction的值为 'right'时从列表的右边取出一个元素返回,当列表为空时返回 None

    要求:

    1. 在取出元素前后列表原有的元素排列方向不变
    2. 当 l和 direction的值非法时抛出 ValueError错误并给出提示

    相关文章

      网友评论

      • 渔父歌:练习标题格式为:python基础类型(一):+标题名
        完成后投稿到这个专题,大家互相讨论学习
        注意:文章中不要出现班级和姓名

      本文标题:python基础类型(一):字符串和列表

      本文链接:https://www.haomeiwen.com/subject/tsrrtqtx.html