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位置插入object
L.pop([index]) -> item
-- 移除并且返回index位置的值 (默认最后一个).如果list为空或者index位置不在范围,报错:
IndexError: pop index out of range
L.remove(value) -> None -- 移除第一次出现的value.如果list中不存在这个value则会报错:
ValueError: list.remove(x): x not in list
L.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