python 基础学习三:数据结构对比
各数据结构对比
列表 | 元组 | 集合 | 字典 |
---|---|---|---|
英文 | list | tuple | set |
可否读写 | 读写 | 只读 | 读写 |
可否重复 | 是 | 是 | 否 |
存储方式 | 值 | 值 | 键(不能重复) |
是否有序 | 有序 | 有序 | 无序 |
初始化 | [1,'a'] | ('a', 1) | set([1,2]) 或 |
添加 | append | 只读 | add |
读元素 | l[2:] | t[0] | 无 |
各数据结构方法
列表(list)
具有以下特点:
1.可以用list()函数或者方括号[]创建,元素之间用逗号’,‘’分隔。
2.列表的元素不需要具有相同的类型
3.使用索引来访问元素
4.可切片
操作 | 解释 |
---|---|
list.append(): | 追加成员 |
list.count(x): | 计算列表中参数x出现的次数 |
list.extend(L): | 向列表中追加另一个列表L |
list.index(x): | 获得参数x在列表中的位置 |
list.insert(): | 向列表中插入数据 |
list.pop(): | 删除列表中的成员(通过下标删除) |
list.remove(): | 删除列表中的成员(直接删除) |
list.reverse(): | 将列表中成员的顺序颠倒 |
list.sort(): | 将列表中成员排序 |
list(seq) | 将元组转换为列表。 |
元组(tuple)
元组跟列表很像,只不过元组用小括号来实现(),这里要区分好和生成器的区别,两者都可用小括号来实现的
具有以下特点:
1.可以用tuple()函数或者方括号()创建,元素之间用逗号’,‘’分隔。
2.元组的元素不需要具有相同的类型
3.使用索引来访问元素
4.可切片
5.元素的值一旦创建就不可修改!!!!!(这是区别与列表的一个特征)
操作 | 解释 |
---|---|
cmp(tuple1, tuple2) | 比较两个元组元素。 |
len(tuple) | 计算元组元素个数。 |
max(tuple) | 返回元组中元素最大值。 |
min(tuple) | 返回元组中元素最小值。 |
tuple(seq) | 将列表转换为元组。 |
字典(Dictionary) |
字典是另一种可变容器模型,且可存储任意类型对象。
具有以下特点:
1.元素由键(key)和值(value)组成
2.可以用dict()函数或者方括号()创建,元素之间用逗号’,‘’分隔,键与值之间用冒号”:”隔开
3.键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组
4.使用键(key)来访问元素
操作 | 解释 |
---|---|
adict.keys() | 返回一个包含字典所有KEY的列表; |
adict.values() | 返回一个包含字典所有value的列表; |
adict.items() | 返回一个包含所有(键,值)元祖的列表; |
adict.clear() | 删除字典中的所有项或元素; |
adict.copy() | 返回一个字典浅拷贝的副本; |
adict.fromkeys(seq, val=None) | 创建并返回一个新字典,以seq中的元素做该字典的键,val做该字典中所有键对应的初始值(默认为None); |
adict.get(key, default = None) | 返回字典中key对应的值,若key不存在字典中,则返回default的值(default默认为None); |
adict.has_key(key) | 如果key在字典中,返回True,否则返回False。 现在用 in 、 not in; |
adict.iteritems() adict.iterkeys() adict.itervalues() | 与它们对应的非迭代方法一样,不同的是它们返回一个迭代子,而不是一个列表; |
adict.pop(key[,default]) | 和get方法相似。如果字典中存在key,删除并返回key对应的vuale;如果key不存在,且没有给出default的值,则引发keyerror异常; |
adict.setdefault(key, default=None) | 和set()方法相似,但如果字典中不存在Key键,由 adict[key] = default 为它赋值; |
adict.update(bdict) | 将字典bdict的键值对添加到字典adict中。 |
集合(set) |
具有以下特点:
1.可以用set()函数或者方括号{}创建,元素之间用逗号”,”分隔。
2.与字典相比少了键
3.不可索引,不可切片
4.不可以有重复元素
操作 | 解释 |
---|---|
s.issubset(t),s <= t | 测试是否 s 中的每一个元素都在 t 中 |
s.issuperset(t),s >= t | 测试是否 t 中的每一个元素都在 s 中 |
s.union(t),s | t |
s.intersection(t),s & t | 返回一个新的 set 包含 s 和 t 中的公共元素 |
s.difference(t),s - t | 返回一个新的 set 包含 s 中有但是 t 中没有的元素 |
s.symmetric_difference(t),s ^ t | 返回一个新的 set 包含 s 和 t 中不重复的元素 |
s.copy() | 返回 set “s”的一个浅复制 |
列表、元组、集合、字典相互转换
列表元组转其他
#列表转集合(出重)
list1 = [6,7,8,8,9]
a=set(list1)
print(a)
#两个列表转字典
list1 = ['key1','key2','key3']
list2 = ['1','2','3'] b
=dict(zip(list1,list2))
print(b) #嵌套列表转字典
list3 = [['key1','value1'],['key2','value2'],['key3','value3']]
c=dict(list3) print(c)
# 列表、元组转字符串
list2 = ['a', 'a', 'b']
d=''.join(list2)
print(d)
t
up1 = ('a', 'a', 'b')
d=''.join(tup1)
print(d)
字典转其他
# 字典转换为字符串
dic1 = {'a':1,'b':2}
e=str(dic1)
print(e)
# 字典key和value互转
dic2 = {'a': 1, 'b': 2, 'c': 3}
dic3={value:key for key, value in dic2.items()}
print(dic3)
字符串转其他
# 字符串转列表
s = 'aabbcc'
f=list(s)
print(f)
# 字符串转元组
g=tuple(s)
print(g)
# 字符串转集合
h=set(s)
print(h)
# 字符串转字典
dic2 = eval("{'name':'ljq', 'age':24}")
print(dic2)
# 切分字符串
a = 'a b c'
i=a.split(' ')
print(i)
小小测试一枚