元组
元组(tuple)是列表类型中比较特殊的类型,因为它一旦创建就不能被修改。(补充解释一哈:像int类型的,当它的值发生改变,则它id也会发生改变;但是list你改变它的内容,它的地址就不会变;元组不可变,如果直接改变元组的值就会报错)元组类型在表达固定数据项、函数多返回值、多变量同步赋值、循环遍历等情况下十分有用。Python中元组采用逗号和圆括号来表示。
若要查询元组操作符可输入dir(tuple)
1. 元组是序列类型的一种扩展
- 元组是一种序列类型,一旦创建就不能被修改
- 使用小括号()或tuple()创建,元素间用逗号,分隔
- 可以使用或不使用小括号
2.元组继承序列类型的全部通用操作
- 元组继承了序列类型的全部通用操作
- 元组因为创建后不能修改,因此没有特殊操作
- 使用或不使用小括号
3.元组的一些简单操作
- 创建
逗号必须
a = 1,2,3
type(a)
#<class 'tuple'>
- 计数count()
count(a)
#3
- 索引index()
a.index(2)
#1
- 组合
a = 1,2,3
b = 4,5,6
c = a + b
c
#1,2,3,4,5,6
- 复制
通过*来复制需要的次数 - 删除del
删除整个元组,删除之后再访问则报错
集合
集合数据类型是没有顺序的简单对象的聚集,且集合元素不重复。Python集合数据类型包括可变集合对象(set)和不可变集合对象(frozenset)。集合中元素类型只能是固定数据类型,例如:整数、浮点数、字符串、元组等,列表、字典和集合类型本山都是可变数据类型,不能作为集合的元素出现。
大括号也可以创建集合,但是{}表示空的字典,因为字典也使用花括号定义。空集只能用set()
集合操作符
同样使用dir(set)
操作符 | 描述 |
---|---|
S_T或S.different(T) | 返回一个新集合,包括在集合S中但不在集合T中的元素 |
S_=T或S.different_update(T) | 更新集合S,包括在集合S中但不在集合T中的元素 |
S&T或S.intersection(T) | 返回一个新集合,包括同时在集合S和T中的元素 |
S&T或S.intersection_update(T) | 更新集合S,包括同时在其中的元素 |
S^T 或s.symmetric_difference(T) | 返回一个新集合,包括集合S和T中元素,但不包括同时在其中的元素 |
S^T 或s.symmetric_difference_update(T) | 更新集合S,包括集合S和T中元素,但不包括同时在其中的元素 |
SlT或S.union(T) | 返回一个新集合,包括集合S和T中所有元素 |
Sl=T或S.update(T) | 更新集合S,包括集合S和T中所有元素 |
S<=T或S.issubset(T) | 如果S与T相同或S是T的子集,返回True,否则返回False,可以用S<T判断S是否是T的真子集 |
S>=T或S.issuperset(T) | 如果S与T相同或S是T的超集,返回True,否则返回False,可以用S>T判断S是否是T的真超集 |
S.isdisjoint | 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False |
Tip:加update时指集合的地址不变,在原集合上操作,并不创建一个新的集合
添加add
用()将需要添加的多个元素装起来,如果需要添加的元素已经存在则不会发生改变,与update不同的是add将字符串作为一个整体放入集合中,而update会将字符串拆散
移除remove
将需要移除的元素写在括号里,如果要移除的元素表示集合中的元素,则会报错(KeyError)
抛弃discard
与remove基本一样,不同的是如果元素不在集合内不会报错
弹出pop
pop不能加入参数否则会报错,并且是随机弹出集合中的一个元素
复制copy
虽然是复制,但是不是指针指向同一个id,即两个的id值是不同的,也就是说如果一个改变,另一个是不会变的
清空clear
清空即为空集合,不是不存在了,而是空集
拼接union
将两个集合拼接并返回一个新集合,集合还有一个功能就是去重,即有重复值就会被覆盖
字典
字典(dict,或映射map)是一组键/值对的数据结构。每个键对应于一个值。在字典中,键是唯一的,值可以不唯一。根据键可以查询到值。对象的哈希值。字典的键只能使用不可变的对象,但字典的值可以使用不可变或可变的对象。字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号分割,整个字典包括在花括号 {} 中
映射类型是“键-值”数据项的组合,每个元素是一个键值对,即元素是(key,value),元素之间是无序的。键值对是一种二元关系。在python中,映射类型主要以字典(dict)体现。
Tip:字典打印出来的顺序与创建之初的顺序不同,字典是集合类型的延续,各个元素没有顺序之分
理解“映射
映射是一种键(索引)和值(数据)的对应。字典是实现键值对映射的数据结构,请理解以下基本原则:
- 字典是一个键值对的集合,该集合以键为索引,一个键信息只对应一个值信息;
- 字典中元素以键信息为索引访问;
- 字典长度是可变的,可以通过对键信息复制实现增加或修改键值对。
字典类型是“映射”的体现
键值对:键是数据索引的扩展
字典是键值对的集合,键值对之间无序
采用大括号{}和dict()创建,键值对用冒号: 表示
映射的表达
映射无处不在,键值对无处不在
例如:统计数据出现的次数,数据是键,次数是值
最主要作用:表达键值对数据,进而操作它们
元素遍历
for k in d :
<语句块>
Tip:d[key]既可以索引,也可以赋值
创建
空字典的创建 a = dict()
非空字典的创建 b = dict(l=1, x=9)
通过二元组列表创建 dict = [(‘l’,1),(‘x’,9)]
通过dict和zip结合创建 dict(zip(‘lx’,[1,9]))
通过fromkeys()创建 dict.fromkeys(range(2),‘a’)
#{0:‘a’,1:‘a’}
查找与增加
字典最重要的用法是查找与特定键相对应的值,这通过索引符号来实现(中括号)
<值> = <字典变量>[<键>]
通过中括号也可以增加新的元素,直接使用大括号{}可以创建一个空的字典,并通过中括号[]向其增加元素
浅拷贝
浅拷贝就是只拷贝一层,拷贝最外面一层
键值操作
- get(k[,d]):
返回指定键的值,如果值不在字典中返回d值 - D.keys():
以列表返回一个字典所有的键 - D.values():
以列表返回一个字典所有的值 - D.items():
返回所有的键值对 - D.setdefault(k[,d]):
和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default - D.popitem():
随机从字典中取出一个键值对,以元组(key,value)形式返回 - del D[key]:
删除字典中某个键值对
更新
D.update([E, ]**F):
把另一个字典的键/值更新到原字典中
弹出
D.pop(k[,d]):
删除字典给定键 k 所对应的值,返回值为被删除的值。(k值必须给出)否则,返回d的值。
随机删除
D.popitem():
随机返回并删除字典中的一对键和值
清空
删除字典内所有元素