1. 字典(dict)
dict是无序的,它是以key value的形式存在的,通过key,找到value。它和list是可变数据,所有的key都是唯一的!!!
定义一个dict
name_info = {
'name':'eason',
'age':'100',
'job':'engineer'
}
dict常用的方法:
1.dict.get(key,0) //如果key不存在,返回0
2.dict.has_key(key) //判断字典里面是否有某个key,以bool值的形式返回
3.dict.itmes() // 将字典转化成列表
4.dict.iteritmes() //生成器
5.dict.keys()//只显示key
6.dict.values() //只显示values
7.dict.setdefault('a',111) //如果里面有a的话,则获取a的值,如果没有的a的话,则定义一个key 为a value为111,并返回改值。
8.dict.update(dict2) //把dict2字典的内容更新到dict里面
9.dict2 = dict 或者 dict2 = dict.copy 其实本质上是import copy dict2 = copy.copy(dict) //浅copy,dic2 复制完成后,更改dict列表中元素的值,dict2的值会变化。
10.import copy dict2 = copy.deepcopy(dict) //深copy,dict2 复制完成后,更改dict列表中的值,dict2的值不会发生变化。
2.列表(list)
列表(list):
更改列表中的值:
list1 = [1,2,3,4]
list1[0] = 5 //将列表中的0位置的元素改为5
append()
list1 = [1,2,3,4]
list2 = [5,6,7]
list1.append(list2)
执行结果:[1, 2, 3, 4, [5, 6, 7]]
extend()
list1 = [1,2,3,4]
list2 = [5,6,7]
list1.extend(list1)
执行结果:[1, 2, 3, 4, 5, 6, 7]
小结:append追加,会将追加的东西作为一个整体追加,而extend是保持原有格式的扩展,将其变成单个字符添加。
count(关键字) 统计关键字的个数
name_list = ['linsir','ttsir','zzsir']
name_list.count('linsir')
执行结果:1
name_list.append('linsir')
name_list.count('linsir')
执行结果:2 //追加了一个linsir
insert(‘索引位置’,添加的值)
name_list = ['linsir','ttsir','zzsir']
name_list.insert (0,'wangsir')
print(name_list)
执行结果:['wangsir', 'linsir', 'ttsir', 'zzsir'] //在0的位置,添加wangsir。
pop() 删除元素,从最后面删除。
name_list = ['linsir','ttsir','zzsir']
name_list.pop()
print(name_list)
执行结果: name_list = ['linsir','ttsir','zzsir']//从右向左删除一个元素
当然pop删除,可以指定删除索引的位置:
name_list = ['linsir','ttsir','zzsir']
name_list.pop(0)
print(name_list)
remove 传递待删除的元素,默认有多个,删除第一个。当然del也是可以删除的。
name_list = ['eason','tony','bob','bob','tony']
name_list.remove('tony')
print(name_list)
执行结果:['eason', 'bob', 'bob', 'tony']
del name_list[0] //删除第一个。
index() 获取列表中某个元素的索引值,使用len()函数,获取列表的所有元素。
name_list = ['linsir','ttsir','zzsir']
name_list.index('ttsir')
执行结果:1 //ttsir在列表中的位置为1。
reverse() 倒过来输出
name_list = ['linsir','ttsir','zzsir']
name_list.reverse()
print(name_list)
执行结果: ['zzsir', 'ttsir', 'linsir']
sort() 排序输出
ame_list = [0,3,2,4]
name_list.sort()
print(name_list)
执行结果:[0, 2, 3, 4]
sorted() 既排序还保留原来的值。
a = [0,3,2,4]
b = sorted(a)
print(b)
执行结果:[0, 2, 3, 4] //a的值是不变的
copy()
names = ['xiaoa','xiaob','xiaoc','xiaod']
names_new = names.copy()
print(names_new)
执行结果:['xiaoa', 'xiaob', 'xiaoc', 'xiaod']
小测试:
names = ['xiaoa','xiaob','xiaoc','xiaod']
print(names)
print(names[0],names[2])
print(names[0:3]) #切片 等同于 print(names[:3]) ,0可以不写。
print(names[-1]) #获取最后一个元素,用-1表示。
print(names[-1:-3]) #这样获取最后三个元素是错误的,因为获取元素是从左往右取的。
print(names[-3:-1]) #应该这样取,但是这样的话最后一个元素是没法取的。考虑用0表示,获取的值直接为[]空列表了。所以,获取方式应该为
print(names[-3:]) #后面直接不写即可。这样就可以获取最后三个元素。
3.元组(tuble)
元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表
语法
names = (a,b,c)
它只有2个方法,一个是count,一个是index。
当然也有可变元组:
可变元组:(即元组里面有列表)
a = (1,2,3,[7,8,9])
a[3][0] = 4
a[3][1] = 5
a[3][2] = 6a
执行结果:(1, 2, 3, [4, 5, 6])
特殊情况:(歧义)c = (1)type© 可以发现输出结果为int,即c为整型了,这样就不是我们想要的创建元祖了。因此,我们定义单个数字为元祖的时候,要在后面加个逗号,来消除歧义。
c = (1,)type© 此时他它tuple,元组。
4.集合(set)
集合是无序的,它和字典很相似,只是它只有key 没有value。
定义一个集合:
s1 = {1,2,3,4,4}
s2 = set([1,2,3,4,4])
print(s1,s2)
输出结果都是{1,2,3,4},可见集合会去重的!
交集:
s1 = {1,2,3,4,8,9}
s2 = set([1,2,3,4,5,6,7])
print(s1,s2)
第一种方法:print(s1&s2)
第二种方法:print(s1.intersection(s2))
输出结果:{1,2,3,4}
并集:
s1 = {1,2,3,4,8,9}
s2 = set([1,2,3,4,5,6,7])
第一种方法:print(s1|s2)
第二种方法:print(s1.unjion(s2))
输出结果:{1, 2, 3, 4, 5, 6, 7, 8, 9}
差集:在s1中s2没有的或者是在s2中s1中没有的
s1 = {1,2,3,4,8,9}
s2 = set([1,2,3,4,5,6,7])
第一种方法:print(s1.difference(s2))
print(s2.difference(s1))
第二种方法:pint(s1 - s2) 在s1中不在s2中
print(s2 -s1) 在s2中不在s1中
输出结果:{8, 9}
{5, 6, 7}
子集:
s1 = {1,2,3}
s2 = {1,2,3,4}
print(s1.issubset(s2))
输出结果:True s1是s2的子集。
父集:
s1 = {1,2,3}
s2 = {1,2,3,4}
print(s1.issubset(s2))
print(s2.issuperset(s1))
输出结果:True ,s2是s1的父集。
对称差集:互相都没有的取出来
s1 = {1,2,3,4,8,9}
s2 = set([1,2,3,4,5,6,7])
第一种方法:print(s1.symmetric_difference(s2))
第二种方法:print(s1^s2)
输出结果:{5, 6, 7, 8, 9}
集合简单操作:
添加一个元素:
s1 = {1,3,4,5}
s1.add(2)
print(s1)
输出结果:{1, 2, 3, 4, 5}
删除一个元素:
s1 = {1,2,3,4,5}
s1.remove(5)
print(s1)
输出结果:{1, 2, 3,4}