共58 次浏览

第四章 序列的应用技能

Python中内置了5个常用的序列,即集合、列表、元组、字典和字符串

4.1认识序列

4.1.1 索引

序列中的每个元素都有编号,也称为索引,索引从0开始。索引与我们在C语言数组中学到的相同,都是从0开始,使用方法也相同。值得注意的是,这里的索引支持负数,负数则是表示从右往左开始计数。采用负数作为索引时,是从 -1 开始的,也就是最右边的元素的下标为-1

4.1.2切片

访问序列元素还有另一种方式,那就是切片。它可以访问一定范围内的元素。通过切片操作可以生成一个新的序列。

 sname[start,end:step]

sname表示序列的名称;start表示切片开始的位置,如果不指定则默认为0;end表示切片结束的位置,如果不指定,则默认为序列是序列的长度;step表示的是切片的步长,如果省略,则默认为1。

 name=['张三','王五','张锋','马六','陈平']
 names[1:5]    #访问从从左边数第2到第五个
 names[0:5:2]
 ['张三','张锋','陈平']

Python中切片的功能与JavaScript中的slice()方法很相似,在这里列出JavaScript的使用方法

image-20210402152809572

4.1.3序列相加

通过 + 操作符,可以将两个序列相加。需要注意的是集合和字典不支持相加。 “+”操作符经常用于字符串和列表元素的组合

 >>>x=[100,200,300]+[400,500,600]+[700,800,900]
 >>>x
 [100,200,300,400,500,600,700,800,900]
 >>>y=['数学','英语','语文']
 >>>z="我最喜欢的学科是"+y[1]
 >>>print(z)
 >>>我最喜欢的学科是英语

4.1.4序列相乘

*号运算符经常用于重复列表中的元素,例如

 >>>x=["数学","英语","语文"]*3
 >>>x
 ["数学","英语","语文","数学","英语","语文","数学","英语","语文"]

4.1.5检查序列中的成员

in运算符通常用于判断一个元素是否存在于序列中,返回的是一个bool值,这个在我们之前的成员运算符中已经介绍过了。

4.2集合类型

4.2.1认识集合

集合(Sets)是一个无序不重复元素的集。它的主要功能是自动清除重复的元素。创建集合时用大括号{ }来包含其元素。如果当我们的集合中有重复元素时,就会将其自动删除。需要注意的是,如果我们想要创建一个空集合,必须使用 set( )函数

 books=set{ }  #正确创建空集合的方式
 books={ } #错误创建集合的方式

4.2.2集合类型的常见操作

  • 添加元素,添加元素的语法格式如下:
    s.add(x)
    将x元素添加到集合s中,如果元素已存在,则不进行任何操作。
  • 删除元素,删除元素的语法格式如下:
    s.remove(x)
    将元素x从集合中删除,如果元素不存在,则会报错
  • 计算元素的个数,语法格式如下:
    len(s)
    则会返回集合s的元素个数
  • 清空集合,清空集合的语法格式如下:
    s.clear( )
    通过这个操作就会将集合的元素清空。

4.3列表类型

4.3.1认识列表类型

列表是写在中括号之间,用逗号分开的元素表,类似于我们C语言中的数组。列表对象属于序数对象,是一群有序对象的集合,并且可以使用数字来作索引。列表对象可以进行新增、修改和删除的操作。这个与JavaScript中的数组属性基本上一样,可以包含不同类型的元素,但是在C语言中并不支持。同时列表对象也支持列表嵌套,即一个元素是另一个列表元素。

4.3.2列表的常见操作

  1. 获取某个元素的索引值 使用列表对象的index(c)方法来返回元素的索引值,这在JavaScript中使用方法也相同
  2. 改变列表对象的元素值 可以通过索引到列表元素然后对其进行重新赋值
  3. 删除列表中的元素 使用del语句可以删除列表对象中的元素,例如:
     >>>x=[100,'床前明月光',8.99,4+2j]
     >>>del x[1]
     >>>x

     [100,8.99,(4+2j)]这里的删除位置同样也支持负数,比如我们要删除最后一个元素,可以直接del x[-1]如果我们想一次性清除所有元素,可以使用 del a[:]

4.3.3列表的内置函数和方法

1
  1. 列表的函数 列表内置的函数有许多,包括len( )、max( )、min( )和list( )……max
  2. 和min可以直接返回列表中的最小值或最大值,但列表的元素数据类型必须一致才能使用,否则会报错。
  3. 列表的方法 想要查看列表有哪些内置的方法时只需要在Python中输入 dir([])就可以查看到了,如上图所示:
    • append(object)
      append()方法在列表对象的结尾,加上新对象object,这个方法与JavaScript中的push()方法相同,都是在列表结尾添加一个元素
    • clear()
      clear()方法用于清空列表,类似于del a[:]
    • copy()
      copy()方法用于复制列表,例如:
       >>>a = [100,'床前明月光',8.99]
       >>>b=a.copy()
       >>>b
       [100,'床前明月光',8.99]
    • count(value)
      count(value)方法针对列表对象中的相同元素值value计算其数目。比如当我们的列表中有多个重复元素时,通过使用count()方法就可以得到列表中value的个数
    • extend(list)
      extend(list)方法将参数list列表对象中的元素加到此表中,成为此列表的新元素,也就是直接将list中的所有元素全部添加到调用者的列表中。
    • index(value)
      index(value)方法将列表对象中元素值的value的索引值返回。
    • insert(index,object)
      insert(index,object)方法将在列表对象中索引值为index的元素之前插入新元素object
    • pop([index])
      pop([index])方法将列表对象中索引值为index的元素删除。如果没有指定的index值,就将最后一个元素删除。在JavaScript中我们也有pop()方法,不过在JavaScript中一般用于删除最后一个元素,且返回值是被删除的那个元素。
    • remove(value)
      remove(value)方法将列表对象中元素值为value的删除。它与pop()方法的不同在于,pop()删除时只知道所以,但是remove()删除时只知道元素值,但不知道索引。
    • reserve()
      reverse()方法将列表对象中的元素颠倒排列。在JavaScript中也有这个方法,他们都是将列表中的元素进行颠倒。
    • sort()
      sort()方法将列表对象中的元素依照大小顺序排列。在JavaScript中也有sort()方法,但是使用方法却不同。在JavaScript中sort()方法会将数组中的字符串按照字母顺序进行升序排序,如果我们要对数字数组进行排序的话还需要去构造方法。

4.4元组类型

4.4.1认识元组

元组对象属于序数对象,是一群有序对象的集合,并且可以使用数字来作索引。元组对象与列表的对象类型,差别在于元组对象不可以新增、修改和删除,同时元组使用小括号而列表则使用中括号。

元组的创建与使用都和列表中相同,但元组是固定的,即一旦创建就无法对其进行更改。其它的属性都与列表的属性相同。

4.4.2元组的常用操作

元组的创建与列表的创建方法是相同的,但是需要注意的是如果想要创建只有一个元素的元组,那么在创建的元组之后必须要加一个逗号

 >>> temp = ('我是你爸爸')
 >>> type(temp)
 <class 'str'>
 #我们看到当不加逗号时数据类型为str,即字符串类型
 >>> temp2 = ('pk哥',)
 >>> type(temp2)
 <class 'tuple'>
 #加上逗号之后数据类型就变为元组了

之前说到元组一旦创建就是不可变的,所以我们在之后是无法在原元组上进行更改的,但是我们可以通过切片的方法以及拼接字符串的方法返回一个新元组。但是可以通过del()来删除该元组

4.4.3元组的内置函数

  1. len()函数
    len()函数返回元组的长度
  2. max()和min()函数 max()函数返回元组或列表中元素的最大值,min()函数返回元组或列表中的最小值,需要注意的是在使用这两个函数时,元组或列表中的元素必须是同一类型时才可以,否则会报错。
  3. sum()函数
    sum()函数返回的是元组中所有元素的和

4.5字典类型

4.5.1 认识字典类型

字典类型在Python中充当着非常重要的作用,但是学过JavaScript的我看着字典这个类型总是十分亲切,因为这个类型与JavaScript中的对象是非常相似的。它们都以键值对的方式存在,但是JavaScript中对象前面的键是没有引号的。后来我发现Python中的对象与Json格式是完全一致的,这个可能会大大的方便python后期与数据进行交换。在同一个字典中,关键字必须互不相同,但是关键字对应的值可以相同。

4.5.2 字典的常用操作

  • 修改字典中的元组值 只需要我们将字典中想要替换的键值对重新赋值即可
  • 删除字典中的元素 使用del语句可以删除字典中的元素,例如:
     >>>x = {'一班':'张小明','二班':'王二狗','三班':'张小明'}
     >>>del x["三班"]
     >>>x

     {‘一班’:’张小明’,’二班’:’王二狗’}
  • 定义字典键值对时需要注意的问题
    1. 不允许同一个键值多次出现,键是唯一的
    2. 因为字典的键值必须不可变,所以可以用数字、字符串或元组充当,列表则不行。

4.5.3字典的内置函数和方法

  1. 字典的内置函数 ①len(dict):计算字典中元素的个数,即键值对的总数。 ②str(dict):将字典的元素转换为可打印的字符串形式。 ③type(variable):返回输入的变量类型,如果变量是字典,就返回字典类型。
  2. 字典的内置方法
    1. clear(): 清除字典中的所有元素。
    2. copy():复制字典的所有内容。
    3. get(k,default=None) :k是字典的索引值。如果k存在,就返回其值,否则,返回后面的内容。另外需要注意的是如果字典中嵌套的有另外的字典那么则无法用get直接获取value值例如:
       >>>x={'一班':'朱小明','二班':'王明霞'}
       >>>x.get("一班")
       '朱小明'
       >>>x.get("三班","不存在")
       '不存在'
    4. items() :使用字典中的元素创建一个由元组对象组成的列表。
    5. keys() :使用字典中的键值创建一个列表对象。也就是将字典中的所有键值存入一个新的列表中。
    6. popitem():删除字典中的最后一个元素。也就是将字典中的最后一个键值对删除,它的返回值是被删除的键值对。Python和其它语言中,如果看到pop或者是其它的一些删除的函数,我们就需要注意它的返回值,返回值一般是被删除的元素。

我们在这里需要注意一下 列表和元组的区别 以及 列表与元组直接的相互转换 同时还有 集合和列表的不同。