您的位置:首页 > 编程语言 > Python开发

Python3--散列(集合,字典),逻辑运算符,运算符优先级

2018-04-03 01:10 447 查看
1.集合
定义集合:(1)set()   (2){}In [5]: a = {1,2,3,'a','b','c'} # 执行结果:In [5]: a = {1,2,3,'a','b','c'}
In [6]: b = set({1,2,3,'a','b','c'})# 执行结果:In [5]: a = {1,2,3,'a','b','c'}如果定义一个空集合,只能用set():In [9]: a = {}
In [10]: type(a)
Out[10]: dict #可以看到,定义空集合时如果用 {} ,它的类型为字典dict,并不是集合
In [11]: b = set()
In [12]: type(b)
Out[12]: set #类型为集合set
集合的特点:无序,唯一(去重),可变
无序:In [13]: a = {2,3,1,7,6}
In [14]: a
Out[14]: {1, 2, 3, 6, 7} #可以看到,输出的结果并不像我们所定义的那样唯一(去重):In [23]: a = {1,2,2,0,2,6}
In [24]: a
Out[24]: {0, 1, 2, 6} #只保留了一个2集合运算:
(1)并:s1 | s2 (s1,s2所有的值)In [25]: a = {1,6,4,3}
In [26]: b = {2,4,6,8}
In [27]: a | b
Out[27]: {1, 2, 3, 4, 6, 8}(2)交:s1 & s2  (s1 ,s2共有)In [28]: a = {1,6,4,3}
In [29]: b = {2,4,6,8}
In [30]: a & b
Out[30]: {4, 6}(3)差:s1 - s2  (s1中有的s2中没有)In [31]: a = {1,6,4,3}
In [32]: b = {2,4,6,8}
In [33]: a - b
Out[33]: {1, 3}(4)与非:s1 ^ s2 (取s1,s2各自独立的元素)In [34]: a = {1,6,4,3}
In [35]: b = {2,4,6,8}
In [36]: a ^ b
Out[36]: {1, 2, 3, 8}
集合的增删改查:
增:
add()---增加单个元素In [37]: a = {1,6,4,3}
In [38]: a.add('hello')
In [39]: a
Out[39]: {1, 3, 4, 6, 'hello'}update()---添加可迭代对象,类似于列表的extendIn [40]: a = {1,6,4,3}
In [41]: a.update('hello')
In [42]: a
Out[42]: {1, 3, 4, 6, 'e', 'h', 'l', 'o'}
In [53]: a.update({'hello':'hi','kk':'m'}) #添加字典
In [54]: a
Out[54]: {1, 2, 3, 5, 7, 9, 'hello', 'kk'} #字典添加的结果为键值
#如果想用update方法添加一个完整的字符串,可以先将字符串转换为列表  eg:a.update(['hello'])
删:
pop()---随机的抛出一个值In [54]: a
Out[54]: {1, 2, 3, 5, 7, 9, 'hello', 'kk'}
In [55]: a.pop()
Out[55]: 1remove()---凭值移除In [56]: a
Out[56]: {2, 3, 5, 7, 9, 'hello', 'kk'}
In [57]: a.remove('hello')
In [58]: a
Out[58]: {2, 3, 5, 7, 9, 'kk'}
查:
isdisjoint()---有交集返回FalseIn [59]: a = {2,1,6,4}
In [60]: b = {2,1}
In [61]: a.isdisjoint(b)
Out[61]: Falseissubset()---判断是否包含于In [62]: a = {2,1,6,4}
In [63]: b = {2,1}
In [64]: a.issubset(b) #a是否包含于b,否,所以返回False
Out[64]: False
In [65]: b.issubset(a)
Out[65]: Trueissuperset()---判断是否包含In [66]: a = {2,1,6,4}
In [67]: b = {2,1}
In [68]: a.issuperset(b) #a是否包含b,是,所以返回True
Out[68]: True
In [69]: b.issuperset(a)
Out[69]: False
2.字典:
两种定义字典的方法
    {‘a’:1,  ‘b’:2}    键值对形式 

    dict(a=1, b=2)         使用dict函数
字典的特性:无序,可变,键唯一(不存在两个或多个一样的键值)
字典方法:
<1>clear()---清空字典In [70]: d = {'a':1,'b':2,'c':3}
In [71]: d.clear()
In [72]: d
Out[72]: {}<2>copy()函数---浅复制In [81]: d = {'a':[1,2,3],'b':4}
In [82]: c = d.copy()
In [83]: d['a'][0] = '9' #改变键值'a'的值
In [84]: d
Out[84]: {'a': ['9', 2, 3], 'b': 4}
In [85]: c
Out[85]: {'a': ['9', 2, 3], 'b': 4} #可见浅复制,只复制了表层,一旦某些值发生变化,复制的新字典也会发生变化<3>get---存在返回对应值,不存在就返回None(不存在时可以自定义返回的值)In [86]: d = {'a':[1,2,3],'b':4}
In [87]: d.get('a')
Out[87]: [1, 2, 3] # 'a'存在,所以返回'a'对应的值[1,2,3]
In [88]: d.get('v') #'v'不存在,所以返回None,即没有返回任何结果
In [89]: d.get('v','我不在这里哦') #当查找的值不在时,可以自定义返回一个值
Out[89]: '我不在这里哦'<4>fromkeys---创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值。
fromkeys()方法语法:dict.fromkeys(seq[,value])
参数:seq --字典键值序列    value--可选参数,设置键序列(seq)的值In [1]: seq = ['a','b','c'] #用('a','b','c')--元组,'abc'--字符串 也可以(序列类型)
In [2]: dict. fromkeys(seq)
Out[2]: {'a': None, 'b': None, 'c': None}
[3]: dict. fromkeys(seq,'666')
Out[3]: {'a': '666', 'b': '666', 'c': '666'}
In [4]: dict. fromkeys(seq,'666')<5>items---返回整个键值对In [90]: d = {'a':[1,2,3],'b':4}
In [91]: d.items()
Out[91]: dict_items([('b', 4), ('a', [1, 2, 3])]) #返回整个键值对,看上去像列表,但不是
In [92]: list(d.items()) #转换成列表
Out[92]: [('b', 4), ('a', [1, 2, 3])]<6>keys---返回键的值In [93]: d = {'a':[1,2,3],'b':4}
In [94]: d.keys()
Out[94]: dict_keys(['b', 'a'])
In [95]: list(d.keys())
Out[95]: ['b', 'a']<7>values---返回键对应的值In [96]: d = {'a':[1,2,3],'b':4}
In [97]: d.values()
Out[97]: dict_values([4, [1, 2, 3]])
In [98]: list(d.values())
Out[98]: [4, [1, 2, 3]]<8>pop---删除指定键,若键存在,则弹出对应的值,若键不存在,可以自定义返回值In [102]: d = {'a':[1,2,3],'b':4}
In [103]: d.pop('a')
Out[103]: [1, 2, 3]
In [104]: d.pop('c','哈哈')
Out[104]: '哈哈'<10>popitem---随机删除一键值对(一般删除末尾键值对)In [105]: d = {'a':[1,2,3],'b':4,'c':666}
In [106]: d.popitem()
Out[106]: ('c', 666)<11>setdefault---有则查,无则增In [112]: d = {'a':[1,2,3],'b':4,'c':666}
In [113]: d.setdefault('a')
Out[113]: [1, 2, 3] #有要查的键,则返回键对应的值
In [114]: d.setdefault('d')
In [115]: d
Out[115]: {'a': [1, 2, 3], 'b': 4, 'c': 666, 'd': None} #不存在要查的键,则添加进来,但是
4000
键对应的值默认为None<12>update---相当与增加了字典的内容In [117]: d = {'a':[1,2,3],'b':4,'c':666}
In [118]: d.update({'1':'a'})
In [119]: d
Out[119]: {'1': 'a', 'a': [1, 2, 3], 'b': 4, 'c': 666}
3.逻辑运算符
(1)查看对象类型
type---直接给出结果,某某是什么类型的In [6]: seq = ('a','b','c')
In [7]: type(seq)
Out[7]: tupleisinstance---判断某某是不是什么类型的In [8]: seq = ('a','b','c')
In [9]: isinstance(seq,str)
Out[9]: False
In [10]: isinstance(seq,tuple)
Out[10]: True
(2)比较运算符:==  , !=
(3)如果有多个条件:
01.判断语句1  and  判断语句2  (同真为真)
02.判断语句1  or    判断语句2    (一真则真)
03.not   判断语句1    
4.运算符优先级

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息