菜狗的Python学习笔记 第二章 列表和元组

  1. Python中最基本的数据结构是序列(sequence),序列中的每个元素被分配一个序号,即元素的位置也称为索引。Python内置的序列类型:列表(list)、元组(tuple)、(Unicode)字符串(string)、buffer对象、xrange对象。
  2. 列表和元组的主要区别是列表可以修改而元组不可以,所以列表通常是在需要变动元素时使用,元组则是在不允许序列改动时使用。
  3. 通用序列操作:
    1)索引(indexing)
    s[3]
    通过索引从序列中获取某个元素。索引为0的是第一个元素,如果索引为负值将会从序列的尾部向前计数,最后一个元素的索引即为-1。可以直接对序列字面值和返回值为序列的函数使用索引。
    2)分片(slicing)
    s[3:5]
    通过分片从序列中访问一个范围内的元素并返回这个范围的序列。通过两个被‘:’分开的索引来执行分片操作,左索引的值被包含在内右索引的值不被包含在内(左闭右开),当左索引大于等于右索引时返回空序列。若分片从第一个元素开始,可以省略左索引;若到最后一个元素结束,可以省略右索引;同时省略左右索引则得到原序列。

    3)步长(step length)
    s[2:8:2]
    通过在分片时增加步长参数可以按照步长遍历序列。步长参数在两个索引之后用’:’分隔,在普通分片操作中步长默认设置为1。步长不可以为0,但可以为负值,此时左索引大于右索引且从右往左索引。

    4)序列相加(adding sequence)
    s1+s2
    通过使用‘+’对两个序列进行相加返回一个新的合成序列。一般来说,不能使两个不同类型的序列相加。
    5)乘法(multiplication)
    s=[None]*n
    通过使序列乘以一个数字n来得到一个重复原序列n次的新序列。
    6)通过in操作可以检查一个值是否在序列中,对于字符串来说可以检查子串,此操作返回布尔值。
    7)len()函数返回一个序列所包含的元素个数;min()函数和max()函数分别返回序列中的最小元素和最大元素。

  4. 列表里的元素用‘,’进行分隔,写在方括号‘[]’中。列表中的元素类型可以不同,也可以嵌套列表。列表是可变的(mutable),因此可以改变列表的内容。

  5. None作为一个Python内置值表示什么也没有。通过乘法和None的配合可以初始化一个所需大小的空表。
  6. list()函数可以接受一个序列并返回一个列表,实际上list()也是一个类型对象。
  7. 基本列表操作:
    1)元素赋值
    通过索引和赋值操作可以改变列表中元素的值。
    2)删除元素
    通过del和索引对列表中元素进行删除
    3) 分片赋值和删除
    结合分片操作可以进行分片赋值和删除,不同于单个元素赋值,分片赋值使用列表进行赋值。值得注意的是,分片赋值既可以进行元素插入(使左索引等于右索引)也可以进行元素删除(用空列表进行赋值)
  8. 方法(method)是一种与对象有紧密联系的函数,方法的调用方式为 object.method(arguments)。列表提供了一些方法,用于检查或修改其中的内容。
  9. 列表方法
    1)append
    通过append可以在列表后追加新的元素。append会直接修改原列表的值,而不是返回一个修改的新的列表。
    2)count
    通过count可以计算同一个元素值在列表中的个数。
    3)extend
    通过extend可以同时在列表后追加多个元素,其参数是这些元素构成的列表。这类似于序列相加,但序列相加是返回一个新的合成序列,而extend是对原序列进行修改。extend的功能也可以使用分片赋值来实现。
    4)index
    通过index可以在列表中查找指定元素并返回这个元素第一次出现位置的索引值。
    5)insert
    通过insert可以在列表的指定位置处插入一个元素。
    6)pop
    通过pop可以移除列表中的一个元素,默认情况下是最后一个元素,并且返回这个元素。pop是唯一的修改列表并且返回一个值的列表方法。通过pop可以利用列表构建栈(stack),虽然列表没有push方法,但可以用append来代替。
    7)remove
    通过remove可以删除在列表中第一次出现的指定值。
    8) reverse
    通过reverse可以将列表中的元素反向存放。如果需要对一个序列进行反向存放可以使用reversed()函数,它返回一个迭代器。
    9)sort
    通过sort可以对原列表进行排序。此方法没有返回值,无法进行拷贝。可以先通过分片操作 y=x[:]对列表进行拷贝再进行排序,但不能如此赋值y=x ,这种情况下,y与x指向同一个列表;另一种方法是使用sorted函数。
    高级排序:
    ①可以定义自己的比较函数作为sort方法的参数进行排序。
    ②sort有可选参数key和reverse:key类似于比较函数,可以为key提供一个函数来使用函数返回的key进行排序;reverse则是通过制定布尔值来决定是否进行反向排序,如x.sort(reverse=Ture)
  10. 元组里的元素用逗号‘,’进行分隔,包含在圆括号‘()’中。如果用逗号分隔数字,则会自动生成一个元组。生成一个包含单一元素的元组不论有无圆括号需要在元素后加一个‘,’ 。
  11. tuple()函数类似于list()函数,获取一个序列参数并转换为一个元组。
  12. 出于两个原因元组的功能是不可替代的:元组可以映射和集合中当键使用,因为键值不允许修改;元组作为很多内置函数和方法的返回类型,有时必须要对这种类型进行处理。

你可能感兴趣的:(菜狗的成长之路)