Python学习笔记-四类数据存储结构:list、tuple、dict以及set

来源:互联网 发布:jquery 反序列化json 编辑:程序博客网 时间:2024/06/05 21:13

list

Python使用名为list的有序列表作为序列类型数据的表示。简单的记忆为方括号[]
例如
classmates = ['Michael', 'Bob', 'Tracy']
classmates[0]
有[] 以及, 分隔。
第二行表示的是第一个元素”Michael”

index(索引)是从0开始。范围从0到 len(list)-1。
可以用-1做索引,直接获取最后一个元素。范围为-1到 -len(list)

超出范围报错:

IndexError: list index out of range

一些方法:
list() -> 返回一个空的list,例如

>>> a = list()>>> a[]

list(iterable) -> 使用iterable的元素初始化一个新的list,例如

>>> b = (1,4,2)>>> a = list(b)>>> a[1, 4, 2]
L.append(object) -> None -- 在末尾添加元素L.clear() -> None -- 从L中移除所有元素L.count(value) -> integer -- 返回当前value在L中的个数L.index(value, [start, [stop]]) -> integer -- 返回第一次出现value的index,如果没找到返回错误“ValueError: *** is not in list”.L.insert(index, object) -- 在指定的index位置插入objectL.pop([index]) -> item -- 移除并且返回index位置的值 (默认最后一个).如果list为空或者index位置不在范围,报错:IndexError: pop index out of rangeL.remove(value) -> None -- 移除第一次出现的value.如果list中不存在这个value则会报错:ValueError: list.remove(x): x not in listL.sort() 排序

注:

  • list元素也可以是另一个list。
  • list元素可以是不同的类型。

比如:

>>> list1.append(['Bob','Alen'])>>> list1[1, 2, 3, 4, 'Michael', ['Bob', 'Alen']]

另外还有一种列表是

tuple

tuple和list非常类似,但是tuple一旦初始化就不能修改,比如同样是列出同学的名字:

classmates = ('Michael', 'Bob', 'Tracy')

注意这里是圆括号()

只有1个元素的tuple定义时必须加一个逗号,,来消除歧义

>>> t = (1,)>>> t(1,)

dict

使用大括号{},中间每一个项目用:做分隔
Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。

>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}>>> d['Michael']95

通过key放入元素到dict中,如果不存在则创建key值为 Adam的Value,如果存在则覆写Adam的Value:

>>> d['Adam'] = 67>>> d['Adam']67

要避免key不存在的错误,有两种办法,一是通过in判断key是否存在:
二是通过dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value:

#!/usr/bin/env python3# -*- coding: utf-8 -*-d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}print('Thomas' in d)print(d.get('Thomas'))print(d.get('Thomas', -1))

注意:返回None的时候Python的交互式命令行不显示结果。

要删除一个key,用pop(key)方法,对应的value也会从dict中删除:

>>> d.pop('Bob')75>>> d{'Michael': 95, 'Tracy': 85}

请务必注意,dict内部存放的顺序和key放入的顺序是没有关系的。

和list比较,dict有以下几个特点:

  • 查找和插入的速度极快,不会随着key的增加而变慢;
  • 列表内容需要占用大量的内存,内存浪费多。

而list相反:

  • 查找和插入的时间随着元素的增加而增加;
  • 占用空间小,浪费内存很少。

所以,dict是用空间来换取时间的一种方法。
注意:dict的key必须是不可变对象

set

set和dict类似,也是一组key的集合,但不存储value,相当于没有value的一堆key值集合。
由于key不能重复,所以,在set中,没有重复的key。重复元素在set中自动被过滤。
并且set并不有序。

要创建一个set,需要提供一个list作为输入集合:

>>> s = set([1, 2, 3])>>> s{1, 2, 3}

通过add(key)方法可以添加元素到set中
通过remove(key)方法可以删除元素
set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作

>>> s1 & s2>>> s1 | s2
原创粉丝点击