一、Python的运算符
1.1、算数运算符
操作符 | 描述 |
+ | 加法 - 对操作符的两侧增加值 |
- | 减法 - 减去从左侧操作数右侧操作数 |
* | 乘法 - 相乘的运算符两侧的值 |
/ | 除 - 由右侧操作数除以左侧操作数 |
% | 模 - 由右侧操作数和余返回除以左侧操作数 |
** | 指数- 执行对操作指数(幂)的计算 |
// | 地板除 - 操作数的除法,其中结果是将小数点后的位数被除去的商 |
1.2、关系运算符
操作符 | 描述 |
== | 检查,两个操作数的值是否相等,如果是则条件变为真 |
!= | 检查两个操作数的值是否相等,如果值不相等,则条件变为真 |
<> | 检查两个操作数的值是否相等,如果值不相等,则条件变为真 |
> | 检查左操作数的值是否大于右操作数的值,如果是,则条件成立 |
< | 检查左操作数的值是否小于右操作数的值,如果是,则条件成立 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立 |
1.3、赋值运算符
操作符 | 描述 |
= | 简单的赋值运算符,赋值从右侧操作数左侧操作数 |
+= | 加法AND赋值操作符,它增加了右操作数左操作数和结果赋给左操作数 |
-= | 减AND赋值操作符,它减去右边的操作数从左边操作数,并将结果赋给左操作数 |
*= | 乘法AND赋值操作符,它乘以右边的操作数与左操作数,并将结果赋给左操作数 |
/= | 除法AND赋值操作符,它把左操作数与正确的操作数,并将结果赋给左操作数 |
%= | 模量AND赋值操作符,它需要使用两个操作数的模量和分配结果给左操作数 |
**= | 指数AND赋值运算符,执行指数(功率)计算操作符和赋值给左操作数 |
//= | 地板除,并分配一个值,执行地板除对操作和赋值给左操作数 |
1.4、逻辑运算符
运算符 | 描述 |
and | 所谓逻辑与运算符。如果两个操作数都是真的,那么则条件成立 |
or | 所谓逻辑OR运算符。如果有两个操作数都是非零然后再条件变为真 |
not | 所谓逻辑非运算符。用于反转操作数的逻辑状态。 如果一个条件为真,则逻辑非运算符将返回false |
二、数据类型
2.1、整数
Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1
,100
,-8080
,0
,等等。
计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x
前缀和0-9,a-f表示,例如:0xff00
,0xa5b4c3d2
,等等。
2.2、浮点数
浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x109和12.3x108是完全相等的。
浮点数可以用数学写法,如1.23
,3.14
,-9.01
,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x109就是1.23e9
,或者12.3e8
,0.000012可以写成1.2e-5
,等等。
整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。
2.3、布尔值
布尔值和布尔代数的表示完全一致,一个布尔值只有True
、False
两种值,要么是True
,要么是False
,在Python中,可以直接用True
、False
表示布尔值(请注意大小写),布尔值可以用and
、or
和not
运算。
2.4、字符串
字符串是以单引号'
或双引号"
括起来的任意文本,比如'abc'
,"xyz"
等等。请注意,''
或""
本身只是一种表示方式,不是字符串的一部分,因此,字符串'abc'
只有a
,b
,c
这3个字符。如果'
本身也是一个字符,那就可以用""
括起来,比如"I'm OK"
包含的字符是I
,'
,m
,空格,O
,K
这6个字符。
字符串常用的方法:
①、find() 查找,找到返回第一个的下标,找不到返回-1
②、replace() 替换
③、strip() 前后去空格
④、join(可迭代对象) 字符串集成,可以实现把列表转成字符串
⑤、split() 切割,切割后以列表形式展现
⑥、format() 格式化字符串
⑦、startswith() 以什么开头
三、数据结构
python具有四种数据结构,分别是:列表、元组、集合、字典,每种数据结构都有自己的特点,并且都有着独到的用处。
3.1、列表
list = [val1, val2, val3, val4]
1)、列表中每一个元素都是可变的;
2)、列表中的元素都是有序的,也就是说每一个元素都有一个位置;
3)、列表中可以容纳Python中的任何对象;
列表常用的方法:
①、append() 最后面追加
②、pop() 最后的删除,返回值是删除的那个元素
③、index(x) 返回元素的下标
④、sort() list排序,等同于sorted(),倒叙输出为:print(sorted(x, reverse=True))
⑤、reverse() 反序
⑥、insert() 插入
⑦、remove() 移除
⑧、extend() 叠加
⑨、[:] 分片,前开后闭
3.2、元组
tuple = (val1, val2, val3, val4)
元组可以理解成一个稳固版的列表,因为元组是不可修改的,因此在列表中的存在的方法均不可使用在元组上, 但是元组是可以被查看索引的,方式就和列表一样
元组常用的方法:
①、().index(x) 返回元素的下标
②、().count(x) 返回元素在元祖中出现的次数
3.3、集合
set = {val1, val2, val3, val4}
集合更接近数学上集合的概念,每一个集合中的元素是无序的、不重复的任意对象,我们可以通过集合去判断数据的从属关系,有时还可以通过集合把数据结构中重复的元素减掉,集合不能被切片也不能被索引,除了做集合运算之外,集合元素可以被添加还有删除:
a = {1, 2, 3, 4}
a.add(5)
a.discard(5)
3.4、字典
1)、字典的定义:
dict = {key1:val1, key2:val2}
①、字典中的数据必须是以键值对的形式出现;
②、逻辑上讲,键是不能重复的,而值是可以重复的;
③、字典中的键(key)是不可变的,也就是无法修改的;而值(val)是可变的,可修改的,可以是任何对象;
2)、字典的申明:
①、x = dict() 最常用声明
②、y = dict(a=1) 常用赋值声明
③、z = {"name": "jiang"} 赋值声明
④、m = dict([("name", "jiang"), ("age", "18")]) 不常用,需要了解
3)、字典的常用方法:
①、get(key) 获取key对应的val,返回值是对应的val
②、pop(key) 删除key对应的val,返回值是对应的val
③、clear() 清空字典
④、keys() 获取字典的所有key
⑤、values() 获取字典的所有val
⑥、copy() 复制,需要注意的是在赋值的时候如果后面的操作对原始数据有改动,而赋值的这个数还想保持原始数据的话需用到,会重新开辟一个内存空间存储而不是使用原始空间
⑦、items() 遍历输出字典,一般配合for循环取值,在3.x里面相当于2.x的iteritems,性能较2.x的items要好,相当于一个是将内容全部存放到内存,而一个是把提纲存放到内存,所以 在使用2.x的时候推荐用iteritems而不用items,在3.x里则没有iteritems
⑧、update() 相当于+,添加到字典后,用的时候先在前面做个声明,后面再调用
⑨、fromkeys() *.fromkeys(list, "val"),把list内的值当成key,而val统一分发给key做val,这个不常用
4)、常用高阶函数:
①、zip() 把两个列表组合成字典
②、type() 查看类型
③、list(), int(), str(), float(), tuple(), dict() 强制类型转换
④、help() 查看帮助,在pycharm里面也可以用ctrl+鼠标左键查看帮助
⑤、isinstance() print(isinstance(l1, list)),查询了l1是否是list类型
⑥、hasattr() print(hassttr(l1, "append")),查询l1是否有append属性
⑦、input() 3.x中等于2.x中的raw_input,就是把输入的转换为字符串格式,而2.x中的input则是没有转换的,在3.x中没有raw_input,可以使用try做捕获异常,方便2和3的转换
⑧、enumerate() 下标与列表内值的结合
xx = [1, 2, 3, 4, 5]
for i,j in enumerate(xx):
print(i, j)
5)、函数中常用多个参数赋值形式:
a, b = ("1", "2") 使用元组形式赋值,元素不变