[TOC]
散列类型、运算优先级和逻辑运算
散列类型
也就是我们所熟知的字典
和集合
,我们今天来看看散列类型的相关逻辑运算。
集合(set)
集合的特点:
无序、元素是唯一的。
集合的创建:
用大括号“{}”,各元素之间用逗号隔开;也可以通过类型转换的方式使用set()内置函数将列表或元祖转换为集合类型。在创建的过程中会自动过滤掉重复的元素,保证元素的唯一性。
演示
1 | In [1]: s = [1,2,3,4,1,2] |
注意:列表是允许元素重复的,但是当我们把列表转成集合后,里面重复的元素就去掉了。
集合的运算
交集:&
并集:|
差集:-
交集
两个集合(s 和t)的差补或相对补集是指一个集合C,该集合中的元素,只属于集合s,而不属于集合t。
1 | In [7]: s1 = {1, 2, 3, 4, 'a', 'b'} |
两个集合取交集,最后输出的元素是属于两个集合所共有的元素。
并集
联合(union)操作和集合的OR(又称可兼析取(inclusive disjunction))其实是等价的,两个集合的联合是一个新集合,该集合中的每个元素都至少是其中一个集合的成员,即:属于两个集合其中之一的成员。
1 | In [10]: s1 = {1, 2, 3, 4, 'a', 'b'} |
并集指的是两个集合的元素进行一个整合,最后生成的元素都是属于原来两个集合之中的某一个。
差集
和其他的布尔集合操作相似,对称差分是集合的XOR(又称”异 或” (exclusive disjunction)).两个集合(s 和t)的对称差分是指另外一个集合C,该集合中的元素,只能是属于集合s 或者集合t的成员,不能同时属于两个集合。
1 | In [13]: s1 = {1, 2, 3, 4, 'a', 'b'} |
差集也叫被减集合的补集。
扩展
add
1 | In [16]: s1 = {1, 2, 3, 4, 'a', 'b'} |
往集合里添加元素。
pop
1 | In [23]: s1 |
pop方法是没有参数的,因为集合是无序的,所以在移除的时候是随机移除的。
remove
1 | In [30]: s1 = {1, 2, 3, 4, 'a', 'b'} |
remove方法是指定元素进行删除。
update
1 | In [35]: s1 |
update方法是往集合里面添加集合。
isdisjoint
1 | In [38]: s1 = {1, 2, 3, 4, 'a', 'b'} |
isdisjoint方法是判断两个集合有没有交集,有返回False,没有则返回True
issubset
1 | In [42]: s1 = {1, 2, 3, 4, 'a', 'b'} |
判断前面的集合是不是后面的集合的子集。
issuperset
1 | In [51]: s1 = {1, 2, 3, 4, 'a', 'b'} |
判断后面的集合是前面集合的子集。
总结
- 集合唯一性:集合中的元素具有唯一性,不存在两个相同的元素。
- 集合可变性:集合中的元素是可变的,集合是可变对象。
- 集合无序性:集合中的元素是无序的,所以没有存在索引。
字典(dict)
字典是除了列表外的另一种可变类型
,字典的元素是以键值对的形式存在,字典的键必须是唯一,可以是数字、字符串或者是元组,键可以为任何不可变类型,列表和集合不能作为字典的键。
字典的创建
第一种 { key :value } ,字典里的键和值用“:”隔开,一对键和值组成一个项,项和项之间用“,”隔开。
第二种使用内置函数dict(key=value),要注意的是这里使用的是“=”赋值的方式,键是以名字的形式所以这种方法的键就必须符合名字的要求,且不能使用关键字作为键。
如果你要使用关键字作为键名那么就只能用第一种方法,关键字以字符串的形式来创建。
通过字典的键可以访问这个键所对应的值,字典是可变类型,所以可以直接对字典的项进行修改,使用dictname[key] = value,如果这个键存在于字典中,则是修改这个键所对应的值,如果这个键不存在则是往字典中添加这个项。
演示
1 | In [56]: {'a':1, 'b':2} |
字典形式:{key:value}
字典的运用
查看
1 | In [67]: a = dict(a=1, b=2) |
由于字典也是无序的,所以我们在取值的时候,是根据key来取出对应的value的。
增加
1 | In [70]: a |
往字典里添加元素时,是key和value对应增加的。
修改
1 | In [73]: a |
修改字典是通过key取出value,然后对应的去重新赋值。
字典的增删改查
增加
copy
1 | In [76]: a |
复制成一个新字典。
fromkeys
查看fromkeys的使用方法
1 | In [79]: help(a.fromkeys) |
fromkeys(iterable, value=None, /) method of builtins.type instance Returns a new dict with keys from iterable and values equal to value.
注意: 返回一个新的dict,其中包含来自iterable的键,值等于value。
1 | In [93]: a |
使用fromkey方法的时候,原字典是不变的,会返回一个新的字典。
setfefault
1 | In [103]: a |
查询并返回key所对应的值,如果没有这个key,则会新建。有则查,无则增。
删除
clear
1 | In [110]: a |
删除所有键值对
pop
查看pop 的方法
1 | In [121]: help(a.pop) |
pop(…) method of builtins.dict instance
D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
If key is not found, d is returned if given, otherwise KeyError is raised
1 | In [116]: a |
pop方法是删除指定的键并返回相应的值。
1 | In [134]: a |
如果传入两个值,第一个是key,第二个是一个值,如果找到key, 就删除对应键值对,并返回该值,如果没有找到key,就返回你所传入的第二个值。
popitem
1 | In [140]: a |
由于字典也是无序的,多以popitem是随机删除一个键值对。
修改
update
1 | In [145]: a |
update方法,对于键值对的处理是,有则改,无则增。
查询
get
查看get的使用方法
1 | In [155]: help(a.get) |
get(…) method of builtins.dict instance
D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None.注意:默认返回None
1 | In [151]: a |
get方法是如果查询到key就返回对应的value,如果没有,就返回你给定的提示值。
1 | In [156]: c,d = a.get('f', (2,3)) |
也可以通过这个功能,做些操作。
keys
1 | In [159]: a |
获取字典里所有的key。
value
1 | In [162]: a |
获取所有的value。
items
1 | In [165]: a |
获取所有的键值对。
总结
- 键(key)唯一性: 字典中的键(key)具有唯一性,不存在两个相同的键(key)
- 可变性: 字典是可变对象,但是自动减的键(key)必须是不可变对象
- 无序性:字典中的键也是无序的,所以不能通过索引取值。
运算符及优先级
Python中的运算符
演示:
1 | In [168]: 2 **3 |
逻辑运算符
查看对象类型
type
1 | In [204]: a = 1 |
直接返回对象的类型
isinstance
1 | In [208]: a |
判断对象的类型
比较运算符
1 | In [216]: a = 1 |
如果有多个条件
- 判断语句1 and 判断语句2
- 判断语句1 or 判断语句2
- not 判断语句1
1 | In [227]: a==b and b!=c |
转载请注明:Seven的博客