几种结构的区别和比较
List
list是一种有序的集合,可以随时添加和删除其中的元素。
说明:
- 定义符号 [ ]
- 支持索引 切片
- 元素可重复
- 正索引:从左至右,从0开始为列表中每一个元素编号
- 负索引:从右至左,从-1开始为列表中每一个元素编号
- 正负索引不可以越界,否则引发异常IndexError
- 定义时直接用赋值语句=
主要函数:
1.list.append(x):这个函数将添加一个元素x到列表的末尾,相当于list = list + [x]
例:定义myList=[1,2,3],执行myList.append(4)后的列表中的值为[1,2, 3,4].
2.. list.extend(L):这个函数将列表L的所有元素添加到原列表的末尾,相当于list = list +L
例:定义myList = [1, 2,3],执行myList.extend([4, 5])后的列表中的值为[1,2, 3, 4, 5]
3.list.insert(i, x):这个函数将在下标i处插入一个元素x。因此, list.insert(0, x)相当于在 列表的最前面插入,而 list.insert(len(list), x)相当于list.append(x)。
例如,定义myList = [1,2, 3],执行myList.insert(1, 4)后的列表中的值为[1,4, 2, 3]。
4.list.remove(x):这个函数将删除列表中第一个值为x的元素。如果没有这样的元素则程序 将报错。
例如,定义myList= [1, 2, 3, 2],执行myList.remove(2)后的列表中的值为[1, 3, 2]
5.list.pop([i]):这个函数将弹出列表中位置为i的元素(即从列表中删除该元素并返回 它)。如果不指定参数i,则默认删除列表中的最后一个元素。
例如,定义myList =[1,2, 3] 执行myList.pop(0)后的列表中的值为[2, 3],再次执行myList.pop()后的列表中的值为[2] ,pop函数是唯一一个既能修改列表又能返回元素值的列表方法。
6.list.index(x):这个函数将返回列表中第一个值为x的元素的索引(下标)。如果没有这 样的元素则会报错。例如,定义myList=[1, 2, 3, 2],执行myList.index(2)将返回1
例如,定义myList=[1, 2, 3, 2],执行myList.index(2)将返回1
7.list.count(x):这个函数将返回列表中x出现的次数。
例如,定义myList =[1, 2, 3, 2] 执行myList.count(2)将返回2
8.list.sort(cmp=None, key=None, reverse=False):这个函数将列表进行重新排序,参数含义 与sorted内置函数的可选参数含义一致。
例如,定义myList =[1, 3, 2, 4],执行mylList.sort()后 列表将变为[1,2, 3,4],<u>若执行myList.ort(reverse=True),则列表中的值为1[4,3,2, 1]</u>
9.list.reverse():这个函数将反转列表中的所有元素位置。
例如,定义myList = [1, 3, 2, 4), 执行myList.reverse()后列表中的值为[4, 2, 3, 1]。
Tuple
tuple和list非常类似,但是tuple一旦初始化就不能修改
tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
说明:
- tuple的陷阱:当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来
- 只有1个元素的tuple定义时必须加一个逗号,
- 定义符号()
- 支持索引 切片
- 元素可重复
- 正索引:从左至右,从0开始为列表中每一个元素编号
- 负索引:从右至左,从-1开始为列表中每一个元素编号
- 正负索引不可以越界,否则引发异常IndexError
- 元组是只读的,所以增、改、删方法都没有
主要函数:
1.t.index(value,[start,[stop]]) :通过值value,从指定区间查找列表内的元素是否匹配,匹配第一个就立即返回索引,匹配不到,抛出异常ValueError
2.t.count(value) : 返回列表中匹配value的次数
3.len(t) 返回元组的个数
Dictionary
Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。
这种key-value存储方式,在放进去的时候,必须根据key算出value的存放位置,这样,取的时候才能根据key直接拿到value。
说明:
- dic中储存的元素是无序的
- 定义符{key : value }
- 不支持切片和索引
- 定义方法:1 .d = {'Michael': 95, 'Bob': 75, 'Tracy': 85} 利用赋值语句直接复制 2. d['Adam'] = 67 利用key值放入 如果key不存在 会报错
- dic在用for遍历输出时 可以定义key和value的值 一起输出
主要函数:
1.keys() 方法用于返回字典中的所有键(key);
2.values() 方法用于返回字典中所有键对应的值(value);
3.items() 用于返回字典中所有的键值对(key-value);
4.copy() 方法返回一个字典的拷贝,也即返回一个具有相同键值对的新字典
5.update() 方法可以使用一个字典所包含的键值对来更新己有的字典。
6.pop(key) 和 popitem() 都用来删除字典中的键值对,不同的是,pop(key) 用来删除指定的键值对,而 popitem() 用来随机删除一个键值对
7.setdefault() 方法用来返回某个 key 对应的 value
格式:dictname.setdefault(key, defaultvalue)
如果该 key 存在,那么直接返回该 key 对应的 value;
如果该 key 不存在,那么先为该 key 设置默认的 defaultvalue,然后再返回该 key 对应的 defaultvalue。
集合
set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作
说明:
- 定义符 { }
- 不支持切片和索引
- 定义方法 1. 利用赋值语句和{ }直接创建 2. set()函数创建 但是其中参数必须为可迭代的,如列表,元组,字符串
网友评论