python 2.7 数据结构: 基础面试总结
python中基础的数据类型包括:
1 Number(数字)
2 String(字符串)
3 List(列表)
4 Tuple(元组)
5 set(集合)
6 Pictionary(字典)
按照可变数据和不可变数据来区分:
不可变数据(3个):Number(数字),String(字符串),Tuple(元组)
可变数据(3个):List(列表),Dictonary(字典),set(集合)
创建方式:
创建列表: listT=[1,2,3,4,5]
创建元组:tup2=(1,2,3,4,5)
创建字典:dict2={"abc":123,"def":789}
创建集合:student={'Tom','Jim','Mary'}
列表:列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)【插入数据可重复,数据不唯一】
listT=[1,"2",(3,4,5,6),[7,8,9],{"10":11},{12,13,14}] #列表可以存储数据类型:数字,字符,元组,列表,字典,set
print listT #得:[1, '2', (3, 4, 5, 6), [7, 8, 9], {'10': 11}, set([12, 13, 14])]
元组:元组(tuple)与列表类似,元组不能二次赋值。【元组本身是只读对象,如果元组中的对象是可变类型数据,可变类型数据依然可以修改】
tuple=(1,"2",(3,4,5,6),[7,8,9],{"10":11},{12,13,14}) #元组可以存储数据类型:数字,字符,元组,列表,字典,set print tuple print tuple[0] print tuple[3] tuple[3][0]=77 print tuple[3]
一下为输出测试结果:
#(1, '2', (3, 4, 5, 6), [7, 8, 9], {'10': 11}, set([12, 13, 14]))
# 1
#[7, 8, 9]
#[77, 8, 9]
字典:列表是有序的对象集合,字典是无序的对象集合【键必须是唯一的,但值则不必;值可以取任何数据类型,但键必须是不可变的】
dict2={1:1,"2":"2",(3):(3)}
print dict2 #得 {3: 3, 1: 1, '2': '2'} 元组类型发生了改变
dict2={1:1,"2":"2",(3,2):(3,2)}
print dict2 #{1: 1, (3, 2): (3, 2), '2': '2'} 元组未发生改变
dict2={1:1,"2":"2",(3,2):(3,2),4:[5],"5":{"66":"66"},(3):{"77","88"}} #键必须是不可变的,值可以是任何类型:依次为数字,字符,元组,列表,字典,set集合
print dict2 #得 {1: 1, (3, 2): (3, 2), 3: set(['77', '88']), 4: [5], '2': '2', '5': {'66': '66'}}
集合:set是一个无序的不重复元素序列
set={1,"2",(3,2)} print set # 得:set([1, (3, 2), '2']) ;看到数据结构后着实让人发现原来set集合内部结构也是一个列表。这就不难理解为啥可以用set给list列表去重
set={1,"2",(3,2)} #集合只能存放不可变类型,可变类型放入后会报错
print set
list=[4,5,6]
dict2={"9":"10"}
set={6,7,8}
#set.add(list) #TypeError: unhashable type: 'list'
#set.add(dict2) #TypeError: unhashable type: 'dict'
#set.add(set) #TypeError: unhashable type: 'set'
面试常问问题:
1 list列表可以存储的类型结构:数字,字符串,元组,列表,字典,set
2 tuple元组可以存储数据类型:数字,字符,元组,列表,字典,set
3 dict字典可以存储数据类型:分别说:键(不可变),值(数字,字符,元组,列表,字典,set集合)
4 set集合可以存储数据类型:不可变类型(数字,字符,元组)