built-in types
- numeric数值类型:int , float , complex
操作 | 结果 |
---|---|
x + y | 和 |
x - y | 差 |
x * y | 乘积 |
x / y | x除以y,结果为浮点型 |
x // y | 整除1//2 = 0, (-1)//2 = -1, 1//(-2) = -1, (-1)//(-2) = 0,趋向于小的值 |
x % y | x/y的余数 |
-x | 取反 |
+x | 不变 |
abs(x) | 绝对值 |
int(x) | 产生整数,只取整数部分int(-8.99)=8;int(8.99)=8 等同math.trunc(x) |
float(x) | 产生浮点数 |
complex(re, im) | 产生复数 |
c.conjugate() | 取共轭 |
divmod(x, y) | (x // y, x % y) |
pow(x, y) | x^y |
x ** y | 同上 |
math.floor(x)
:小于x的最大值
math.ceil(x)
:大于x的最小值
2. sequences
3. mappings
4. classes
5. instances
6. exceptions.
数据类型分类
可变数据类型 | 不可变数据类型 |
---|---|
list, dictionary, set, numpy array, user defined objects | integer, float, long, complex, string, tuple, frozenset |
元组
元组与列表类似,元组Tuple也是个有序序列,但是元组是不可变的
1. 元组使用括号嵌套,各个元素之间使用逗号分开(括号可以没有)
2. 元组中的元素不可更改,但元素可以是可变数据类型
3. 空元组可以用一对括号表示;单元素元组要在元素后面加上逗号
#使用括号嵌套,括号可以没有;单元素元组和空元素元组的表示
empty=()
singleton=9,
print(empty,singleton)
#可以包含列表
list1=[1,2,3]
list2=[4,5,6]
cell=list1,list2,'str'
print(cell,cell[0])
cell[0][0]=9
print(cell)
*运行结果*
() (9,)
([1, 2, 3], [4, 5, 6], 'str') [1, 2, 3]
([9, 2, 3], [4, 5, 6], 'str')
为什么需要元组
- 旧式字符串格式化中参数要用元组;
- 在字典中当作键值;
- 数据库的返回值……
字典dict
1.字典是一种mapping类型,键-值的存储方式(key-value),字典的键必须是不可変对象,因为dict根据键来计算value的存储位置,如果每次计算相同的键得出的结果不同,那么dict内部就完全混乱了,这种通过key计算位置的算法成为哈希算法;字符串和整数适合作为键,而浮点数不适合
2、字典的产生方式有两种,且字典没有顺序
- { }方式
- dict()函数方式产生
3、 字典方法:
get方法:用索引可以找到一个键对应的值,但是当字典中没有这个键的时候,Python会报错,这时候可以使用字典的 get 方法来处理这种情况,其用法:
d.get(key, default = None)
pop方法:pop 方法可以用来弹出字典中某个键对应的值,同时也可以指定默认参数:
d.pop(key, default = None)
删除并返回字典中键 key 对应的值,如果没有这个键,返回 default 指定的值(默认是 None )。- update方法:可以通过索引来插入、修改单个键值对,但是如果想对多个键值对进行操作,这种方法就显得比较麻烦,好在有 update 方法:
d.update(newd)
将字典newd中的内容更新到d中去 in方法:in查询字典中是否有该键
keys 方法,values 方法和items 方
法:
返回一个由所有键组成的列表;
d.keys()
d.values()
返回一个由所有值组成的列表;
d.items()
返回一个由所有键值对元组组成的列表;
#使用{}产生字典
a={}
a['one']='this is number1'
a['two']='this is number2'
print(a,a['one'])
#使用dict()转化来生成字典
inventory = dict(
[('foozelator', 123),
('frombicator', 18),
('spatzleblock', 34),
('snitzelhogen', 23)
])
print(inventory)
*运行结果*
{'one': 'this is number1', 'two': 'this is number2'} this is number1
{'foozelator': 123, 'frombicator': 18, 'spatzleblock': 34, 'snitzelhogen': 23}
#get方法
c=inventory.get('foozelator')
d=inventory.get('a',None)
print(c,d)
*运行结果*
123 None
#pop方法
de=inventory.pop('frombicator')
no=inventory.pop('one','not exit')
print(de,no)
*运行结果*
18 not exit
#update方法
inventory_mod={'foozelator':3,'yutree':98}
print(inventory)
*运行结果*
{'foozelator': 123, 'spatzleblock': 34, 'snitzelhogen': 23}
#in方法
[print(inventory.get(item)) for item in inventory ]
*运行结果*
123
34
23
#keys方法,values方法,items方法
list1=inventory.keys()
list2=inventory.values()
list3=inventory.items()
print(list1,list2,)
print(list3)
*运行结果*
dict_keys(['foozelator', 'spatzleblock', 'snitzelhogen']) dict_values([123, 34, 23])
dict_items([('foozelator', 123), ('spatzleblock', 34), ('snitzelhogen', 23)])
集合set
- 生成set的两种方法
:set()生成空集合,set(list)在set函数内部传入列表可以初始化集合
:使用{ }可以生成集合,但是{ }不能用来生成空集合 - set是无序序列,因为集合是无序的,所以当集合中存在两个同样的元素的时候,Python只会保存其中的一个(唯一性);同时为了确保其中不包含同样的元素,集合中放入的元素只能是不可变的对象(确定性)
- set方法
操作或方法 | 含义 |
---|---|
a.union(b) 或者 a b | 两个集合的并,返回包含两个集合所有元素的集合(去除重复) |
a.intersection(b) 或者 a & b | 两个集合的交,返回包含两个集合共有元素的集合 |
a.difference(b) 或者 a - b | a 和 b 的差集,返回只在 a 不在 b 的元素组成的集合 |
a.symmetric_difference(b) 或者 a ^ b | a 和b 的对称差集,返回在 a 或在 b 中,但是不同时在 a 和 b 中的元素组成的集合 |
b.issubset(a) 或者 b <= a | 要判断 b 是不是 a 的子集 |
a.issuperset(b) 或者 a >= b | 要判断 a 是不是 b 的子集 |
s.add(a) | 向s集合添加元素a,如果添加的是已有元素,集合不改变 |
s.update(seq) | 向集合添加多个元素 |
s.remove(ob) | 从集合s中移除元素ob,如果不存在会报错 |
t.pop() | 由于集合没有顺序,不能像列表一样按照位置弹出元素,所以pop 方法删除并返回集合中任意一个元素;如果集合中没有元素会报错 |
t.discard(a) | 作用与 remove 一样,但是当元素在集合中不存在的时候不会报错 |
a.difference_update(b) | 从a中去除所有属于b的元素 |