python3学习笔记-数据结构

列表和循环

列表

  • 列表就是一种有序的列表
  • 有序的列表
  • 随机访问
  • 线性访问
  • 通过索引访问

创建列表

  • 普通列表
    • 以作坊括号([)开头打开列表,然后写要放入列表的东西,以逗号隔开,以右方括号(])表明列表结束,然后赋给一个变量
    • eg
     hairs = ['brown','blond','red']
     eyse = ['brown','blue','green']
     weights = [1,2,3,4]
    
  • 二维列表
    • 在列表中包含列表
    • eg
    [[1,2,3],[4,5,6]]
    

相关函数

append()

  • 用于在列表末尾添加新的对象
  • 语法:list.append(obj)
  • 返回值:该方法无返回值,但是会修改原来的列表。

pop()

pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。

  • 语法:list.pop([index=-1])
  • 参数:index -- 可选参数,要移除列表元素的索引值,不能超过列表总长度,默认为 index=-1,删除最后一个列表值。
  • 返回值:该方法返回从列表中移除的元素对象。

实例

image

列表切片

切片操作是指按照步长,截取从起始索引到结束索引,但不包含结束索引(也就是结束索引减1)的所有元素。

语法表达式

[start_index : end_index : step]
  • start_index表示起始索引
  • end_index表示结束索引
  • step表示步长,步长不能为0,且默认值为1【索引元素不包含step】

注意

  • python3支持切片操作的数据类型有list、tuple、string、unicode、range
  • 切片返回的结果类型与原对象类型一致
  • 切片不会改变原对象,而是重新生成了一个新的对象

注释方法

  • 单行注释:使用#号进行注释
  • 多行注释:使用三个双引号或单引号来注释多行内容
  • 如果有三个引号的注释方法,会优先使用三个点的注释,其次才展示#号的注释

字典

字典是又一种数据结构,和列表一样,它是变成中最常用的数据结构之一。字典的用处是把要存储的东西和你的键映射或者关联起来

字典和列表的不同

  • 列表是一些项的有序排列,而字典是将一些项(键)对应到另外一些项(值)的数据结构
  • 字典用在各种需要通过一个值去查看另一个值的场合,字典也可以称作 查找表
  • 列表是专供需要有序排列的数据使用的,只要知道索引就能查到对应的值了

部分函数

OrderedDict

  • 可以对字典进行排序

Return an instance of a dict subclass, supporting the usual dict methods. An OrderedDict is a dict that remembers the order that keys were first inserted. If a new entry overwrites an existing entry, the original insertion position is left unchanged. Deleting an entry and reinserting it will move it to the end.

部分参数
  • popitem(last=True)

The popitem() method for ordered dictionaries returns and removes a (key, value) pair. The pairs are returned in LIFO order if last is true or FIFO order if false.

-move_to_end(key, last=True)

Move an existing key to either end of an ordered dictionary. The item is moved to the right end if last is true (the default) or to the beginning if last is false. Raises KeyError if the key does not exist:

  • 示例
    • 1
    >>> d = OrderedDict.fromkeys('abcde')
    >>> d.move_to_end('b')
    >>> ''.join(d.keys())
    'acdeb'
    >>> d.move_to_end('b', last=False)
    >>> ''.join(d.keys())
    'bacde'
    
    • 2
    >>> # regular unsorted dictionary
    >>> d = {'banana': 3, 'apple': 4, 'pear': 1, 'orange': 2}
    
    >>> # dictionary sorted by key
    >>> OrderedDict(sorted(d.items(), key=lambda t: t[0]))
    OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])
    
    >>> # dictionary sorted by value
    >>> OrderedDict(sorted(d.items(), key=lambda t: t[1]))
    OrderedDict([('pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)])
    
    >>> # dictionary sorted by length of the key string
    >>> OrderedDict(sorted(d.items(), key=lambda t: len(t[0])))
    OrderedDict([('pear', 1), ('apple', 4), ('orange', 2), ('banana', 3)])
    

模块、类和对象

类(class)

类可以通过一种特殊的方式构造软件,将一组函数和数据放到一个容器中,从而用.访问他们,可以加强程序的一致性,使用起来也会更加简洁

示例

class MyStuff(Object):
    def __init__(self):
        self.tangerine = "And now a thousand years between"
    
    def apple(self)
        print("I AM CLASS APPLES!")
  • 对一个类来说,必须有一个类似于导入(import)的概念,这个概念就叫做实例化,他的意思就是创建,放一个类实例化后,得到的就叫做对象

使用 init或者别的类的函数的时候必须加一个self参数,可以防止代码歧义

对象

  • 使用上面的类
thing = MyStuff()
thing.apple()
print(thing.tangerine)
  • 第一行代码就是“实例化”操作:
    1. Python查找MyStuff()并且知道了它是你定义的一个类
    2. Python创建了一个对象,里边包含了你在该类中用def指定的所有函数
    3. 然后Python回去检查你是不是在里边创建了一个init的该函数,如果有创建,它就会调用这个函数,从而对新创建的空对象进行初始化
    4. 在MyStuff的init函数里,有一个多余的函数叫做self,这个就是Python为你创建的空对象,而你可以对它进行类似模块、字典等操作,为它设置一些变量
    5. 在这里,self.tangerine被设置成了一段歌词,这样就初始化了该对象
    6. 最后Python将这个新建的对象赋给一个叫做thing的变量,以供后面使用
  • 类和对象与模块的区别
    • 类就像是一种蓝图或者一种预定义的东西,通过它可以创建新的迷你模块
    • 实例化的过程就相当于创建了这么一个迷你模块,并且同时导入了它,“实例化”的意思就是从创建一个对象
    • 结果创建的迷你模块就是一个对象,你可以将它赋值给一个变量供后续操作

模块

模块和字典差不多,是一种将一种东西对应到另一种的方式

  • 属性
    1. 模块是包含函数和变量的python文件
    2. 可以导入这个文件
    3. 然后可以使用.操作访问模块中的函数和变量

示例

  1. 有一个模块名字叫做"mystuff.py",里面有一个叫做apple的函数
    # this goes in mystuff.py
    def apple():
        print("I AM APPLES!")
    
  2. 接下去就可以使用import进行调用这个模块,并且访问apple函数
    impore mystuff
    mystuff.apple()
    
  3. 还可以放一个叫做
    3.tangerine = "Living reflection of a dream的变量到模块里面
    # this goes in mystuff.py
    def apple():
        print("I AM APPLES!")
    tangerine = "Living reflection of a dream"
  1. 同样,可以访问这个变量
     impore mystuff
     mystuff.apple()
     print(mystuff.tangerine)
    

你可能感兴趣的:(python3学习笔记-数据结构)