前言
1.Python使用对象模型来存储数据,每一个数据类型都有一个内置的类,每新建一个数据,实际就是一个对象,即所有数据都是对象。
2.对象的3个特性:
- 身份:即内存地址,可以用id()来获取
- 类型:决定了该对象保存的类型,需要遵循什么规则,可用type()来获取该数据类型
- 值:对象的保存的的真实数据
3.标准的数据类型:
数字、字符串、列表、元祖、字典
4.其他类型:
Null、文件、集合、函数、类、模块
数字
数字类型分为:int()整型、long()长整型、float()浮点型、 complex()复数、bool()布尔值
注意:Python2区分整型,长整型 ; Python3中无长整型一说,都叫整型。
数字类型的转换:
数字类型的转换:
-
int(x, base=None) 将x转换为一个整数。base为按照多少进制进行转换
-
float(x) 将x转换到一个浮点数。
-
complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。
-
complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。
>>> int(‘101‘,2) 5 >>> int(‘101‘) 101 >>> float(‘101‘) 101.0 >>> complex(3) (3+0j) >>> complex(3,4) (3+4j)
数值运算
加(+)、减(-)、乘(*)、除(/)、取余(%)、乘方(**):
print(9 / 4) # 返回 2.25 print(9 // 4) # 返回 2 print(2 ** 3) # 返回 8
注意:数值的除法(/)总是返回一个浮点数,要获取整数使用(//)操作符。
相关数学函数:
函数 | 返回值 ( 描述 ) |
---|---|
abs(x) | 返回数字的绝对值,如abs(-10) 返回 10 |
ceil(x) | 返回数字的上入整数,如math.ceil(4.1) 返回 5 |
cmp(x, y) |
如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。 Python 3 已废弃 。使用 使用 (x>y)-(x<y) 替换。 |
exp(x) | 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045 |
fabs(x) | 返回数字的绝对值,如math.fabs(-10) 返回10.0 |
floor(x) | 返回数字的下舍整数,如math.floor(4.9)返回 4 |
log(x) | 如math.log(math.e)返回1.0,math.log(100,10)返回2.0 |
log10(x) | 返回以10为基数的x的对数,如math.log10(100)返回 2.0 |
max(x1, x2,...) | 返回给定参数的最大值,参数可以为序列。 |
min(x1, x2,...) | 返回给定参数的最小值,参数可以为序列。 |
modf(x) | 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。 |
pow(x, y) | x**y 运算后的值。 |
round(x [,n]) | 返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。 |
sqrt(x) | 返回数字x的平方根,数字可以为负数,返回类型为实数,如math.sqrt(4)返回 2+0j |
三角函数:
函数 | 描述 | |
---|---|---|
acos(x) | 返回x的反余弦弧度值。 | |
asin(x) | 返回x的反正弦弧度值。 | |
atan(x) | 返回x的反正切弧度值。 | |
atan2(y, x) | 返回给定的 X 及 Y 坐标值的反正切值。 | |
cos(x) | 返回x的弧度的余弦值。 | |
hypot(x, y) | 返回欧几里德范数 sqrt(x*x + y*y)。 | |
sin(x) | 返回的x弧度的正弦值。 | |
tan(x) | 返回x弧度的正切值。 | |
degrees(x) | 将弧度转换为角度,如degrees(math.pi/2) , 返回90.0 | |
radians(x) | 将角度转换为弧度 |
数字常量:
常量 | 描述 |
---|---|
pi | 数学常量 pi(圆周率,一般以π来表示) |
e | 数学常量 e,e即自然常数(自然常数)。 |
比较运算
运算符 | 描述符 | 示例 |
---|---|---|
== | 检查,两个操作数的值是否相等,如果是则条件变为真。 | (a == b) 不为 true. |
!= | 检查两个操作数的值是否相等,如果值不相等,则条件变为真。 | (a != b) 为 true. |
<> | 检查两个操作数的值是否相等,如果值不相等,则条件变为真。 | (a <> b) 为 true。这个类似于 != 运算符 |
> | 检查左操作数的值是否大于右操作数的值,如果是,则条件成立。 | (a > b) 不为 true. |
< | 检查左操作数的值是否小于右操作数的值,如果是,则条件成立。 | (a < b) 为 true. |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立。 | (a >= b) 不为 true. |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立。 | (a <= b) 为 true. |
赋值运算
运算符 | 描述符 | 示例 |
---|---|---|
= | 简单的赋值运算符,赋值从右侧操作数左侧操作数 | c = a + b将指定的值 a + b 到 c |
+= | 加法AND赋值操作符,它增加了右操作数左操作数和结果赋给左操作数 | c += a 相当于 c = c + a |
-= | 减AND赋值操作符,它减去右边的操作数从左边操作数,并将结果赋给左操作数 | c -= a 相当于 c = c - a |
*= | 乘法AND赋值操作符,它乘以右边的操作数与左操作数,并将结果赋给左操作数 | c *= a 相当于 c = c * a |
/= | 除法AND赋值操作符,它把左操作数与正确的操作数,并将结果赋给左操作数 | c /= a 相当于= c / a |
%= | 模量AND赋值操作符,它需要使用两个操作数的模量和分配结果左操作数 | c %= a is equivalent to c = c % a |
**= | 指数AND赋值运算符,执行指数(功率)计算操作符和赋值给左操作数 | c **= a 相当于 c = c ** a |
//= | 地板除,并分配一个值,执行地板除对操作和赋值给左操作数 | c //= a 相当于 c = c // a |
位运算
按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下:
变量 a 为 60,b 为 13
>>> a = 60 # 60 = 0011 1100 >>> b = 13 # 13 = 0000 1101 >>> a & b 12 >>> a ^ b 49 >>> a | b 61 >>> ~a -61 >>> a << 2 240 >>> a >> 2 15
逻辑运算
运算符 | 描述 | 示例 |
---|---|---|
and | 所谓逻辑与运算符。如果两个操作数都是真的,那么则条件成立。 | (a and b) 为 true. |
or | 所谓逻辑OR运算符。如果有两个操作数都是非零然后再条件变为真。 | (a or b) 为 true. |
not | 所谓逻辑非运算符。用于反转操作数的逻辑状态。如果一个条件为真,则逻辑非运算符将返回false。 | not(a and b) 为 false. |
String(字符串)
字符串:是一个有序的字符的集合,用于存储和表示的基本的文本信息。
‘内容‘或 "内容" 中间包含的内容称为字符串
特性:
- 只能存放一个值
- 不可变
- 按照从左到右的顺序定义字符集合,下标从0开始顺序访问,有序
字符串方法:
序号 | 方法及描述 |
---|---|
1 |
capitalize() |
2 |
center(width, fillchar) 返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。 |
3 |
count(str, beg= 0,end=len(string)) 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数 |
4 |
bytes.decode(encoding="utf-8", errors="strict") Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。 |
5 |
encode(encoding=‘UTF-8‘,errors=‘strict‘) 以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是‘ignore‘或者‘replace‘ |
6 |
endswith(suffix, beg=0, end=len(string)) |
7 |
expandtabs(tabsize=8) 把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。 |
8 |
find(str, beg=0 end=len(string)) 检测 str 是否包含在字符串中 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1 |
9 |
index(str, beg=0, end=len(string)) 跟find()方法一样,只不过如果str不在字符串中会报一个异常. |
10 |
isalnum() 如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False |
11 |
isalpha() 如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False |
12 |
isdigit() 如果字符串只包含数字则返回 True 否则返回 False.. |
13 |
islower() 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False |
14 |
isnumeric() 如果字符串中只包含数字字符,则返回 True,否则返回 False |
15 |
isspace() 如果字符串中只包含空格,则返回 True,否则返回 False. |
16 |
istitle() 如果字符串是标题化的(见 title())则返回 True,否则返回 False |
17 |
isupper() 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False |
18 |
join(seq) 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
19 |
len(string) 返回字符串长度 |
20 |
ljust(width[, fillchar]) 返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。 |
21 |
lower() 转换字符串中所有大写字符为小写. |
22 |
lstrip() 截掉字符串左边的空格 |
23 |
maketrans() 创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。 |
24 |
max(str) 返回字符串 str 中最大的字母。 |
25 |
min(str) 返回字符串 str 中最小的字母。 |
26 |
replace(old, new [, max]) 把 将字符串中的 str1 替换成 str2,如果 max 指定,则替换不超过 max 次。 |
27 |
rfind(str, beg=0,end=len(string)) 类似于 find()函数,不过是从右边开始查找. |
28 |
rindex( str, beg=0, end=len(string)) 类似于 index(),不过是从右边开始. |
29 |
rjust(width,[, fillchar]) 返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串 |
30 |
rstrip() 删除字符串字符串末尾的空格. |
31 |
split(str="", num=string.count(str)) num=string.count(str)) 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num 个子字符串 |
32 |
splitlines([keepends]) 按照行(‘\r‘, ‘\r\n‘, \n‘)分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。 |
33 |
startswith(str, beg=0,end=len(string)) 检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。 |
34 |
strip([chars]) 在字符串上执行 lstrip()和 rstrip() |
35 |
swapcase() 将字符串中大写转换为小写,小写转换为大写 |
36 |
title() 返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle()) |
37 |
translate(table, deletechars="") 根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中 |
38 |
upper() 转换字符串中的小写字母为大写 |
39 |
zfill (width) 返回长度为 width 的字符串,原字符串右对齐,前面填充0 |
40 |
isdecimal() 检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。 |
name = ‘I\‘am LiChengGuang‘ print(name) # 输出字符串,打印:I‘am LiChengGuang print(len(name)) # 输出字符串长度 print(name[0]) # 输出第 1 个字符 print(name[0: - 1]) # 输出下标第 1 个位置到倒数第 2 位置的所有字符,打印:I‘am LiChengGuan print(name[5: 15]) # 输出下标从第 5 个到第 14 个位置的字符,打印:LiChengGua print(name[5:]) # 输出下标从第 5 个起后面所有的字符,打印: LiChengGuan print(name * 2) # 输出 2 次字符串 print(‘Hello,‘ + name) # 字符串拼接,打印:Hello,I‘am LiChengGuan print(‘Li‘ in name) # True print(name.find(‘Li‘)) # 查找,打印 5,即返回开始的索引值,否则返回-1 print(name.index(‘Li‘)) # 查找,打印 5,即返回开始的索引值,没有则抛异常 print(‘Li‘ not in name) # False print(name.upper()) # 全部转大写 print(name.lower()) # 全部转小写 print(name.capitalize()) # 把字符串的第一个字符大写 print(name.isspace()) # 是否包含空格 print(name.replace(‘Li‘, ‘‘)) # 替换操作 print(name.split(‘m‘)) # 分割操作,打印: ["I‘a", ‘ LiChengGuan‘] print(name.strip()) # 去掉字符串的左右空格 print(name.lstrip()) # 去掉字符串的左空格 print(name.rstrip()) # 去掉字符串的右空格
占位符
和 Java 一样,Python 也有占位符。
%d 表示那个位置是整数;%f 表示浮点数;%s 表示字符串。
print(‘Hello,%s‘ % ‘Python‘) print(‘Hello,%d%s%.2f‘ % (666, ‘Python‘, 9.99)) # 打印:Hello,666Python10.00
其中:
1、 % 是转换开始的标志;
2、如果不止一个占位符,要写在一个圆括号内,中间用逗号(半角)隔开;
3、%.2f 代表两位小数,不是两位会四舍五入。
字符串换行
1、三个单引号
Python 三个单引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。
2、三个双引号
3、\结尾
List(列表)
列表是写在方括号 [] 之间、用逗号分隔开的元素列表,列表中元素的类型可以是不相同。如:
s = [100, 100.0, ‘lcg‘, True, ‘I\‘am LiChengGuang‘]
访问元素
print(s) # 输出 list,打印:[100, 100.0, ‘lcg‘, True, "I‘am LiChengGuang"] print(len(s)) # 输出 list 长度 print(s[0]) # 输出 list 第 1 个元素 print(s[2:5]) # 输出 lsit 下标从第 2 个到第 4个元素,打印:[‘lcg‘, True, "I‘am LiChengGuang"] print(s[2:]) # 输出 lsit 下标从第 2 个起后面所有元素,打印:[‘lcg‘, True, "I‘am LiChengGuang"]
添加元素
s1 = [False] print(s + s1) # [100, 100.0, ‘lcg‘, True, "I‘am LiChengGuang", False] # 在列表末尾一次性追加另一个列表 s.extend(s1) print(‘extend 添加 = ‘ + str(s)) # [100, 100.0, ‘lcg‘, True, "I‘am LiChengGuang", False] # append 方法拼接,列表末尾添加新的对象 s.append(‘测试拼接‘) print(‘append 方法拼接 = ‘ + str(s)) # [100, 100.0, ‘lcg‘, True, "I‘am LiChengGuang", False, ‘测试拼接‘] s.insert(0, ‘测试拼接‘) # 指定位置插入元素 print(‘insert 插入 = ‘ + str(s)) # [‘测试拼接‘, 100, 100.0, ‘lcg‘, True, "I‘am LiChengGuang", False, ‘测试拼接‘]
更新元素
s[0] = ‘1024‘ print(‘更新元素 = ‘ + str(s)) # 更新元素 = [‘1024‘, 100, 100.0, ‘lcg‘, True, "I‘am LiChengGuang", False, ‘测试拼接‘]
删除元素
s.pop() # pop 方法删除,可指定位置,默认最后一个 print(s) # 打印:[‘1024‘, 100, 100.0, ‘lcg‘, True, "I‘am LiChengGuang", False] s.pop(0) # pop 指定位置删除 print(s) # 打印:[[100, 100.0, ‘lcg‘, True, "I‘am LiChengGuang", False] del s[0] print(s) # 打印:[100.0, ‘lcg‘, True, "I‘am LiChengGuang", False] # 移除列表中某个值的第一个匹配项,没有会抛异常 s.remove(‘lcg‘) print(s)
其他
print(s * 2) # 打印两次 s.reverse() # 反向列表中元素 print(s) s2 = s.copy() # 复制 print(s2) s.clear() # 清空 print(s)
Tuple(元组)
元组写在小括号 () 里,元素之间用逗号隔开,元组的元素不能修改,没有 append(),insert() 这样的方法。
可以通过索引切片来取值,可以使用len()求长度。
Dictionary(字典)
字典用 { } 标识或者 dict() 方法创建字典,它是一个无序的键 (key) : 值 (value) 对集合。键 (key) 必须使用不可变类型。在同一个字典中,键 (key) 必须是唯一的(如果不唯一,将只取最后一个值,但是不建议这样写)。{ } 是用来创建一个空字典。
dic = {‘name‘: ‘lcg‘, ‘site‘: ‘http://lcgsmile.cn/‘, ‘code‘: 1024}
访问元素
print(dic) print(dic[‘site‘]) # 输出键为 site 的值
修改元素
dic[‘code‘] = 520 # 修改元素 print(dic[‘code‘]) # 打印:520
新增元素
dic[‘id‘] = 1314 # 新增元素 print(dic) # 打印:{‘name‘: ‘lcg‘, ‘site‘: ‘http://lcgsmile.cn/‘, ‘code‘: 520, ‘id‘: 1314}
删除元素
dic.pop(‘code‘) # 删除 code 键 print(dic) # 打印:{‘name‘: ‘lcg‘, ‘site‘: ‘http://lcgsmile.cn/‘, ‘id‘: 1314} dic.clear() # 清空 print(dic) # 打印:{} # del dic # 删除
其他
# dict() 方法创建字典 d = dict(id=1024, name=‘lcg‘, site=‘http://lcgsmile.cn/‘) print(d) print(d.copy()) # 浅复制 print(dic.keys()) # 输出所有键,打印:dict_keys([‘name‘, ‘site‘, ‘code‘]) print(dic.values()) # 输出所有值,打印:dict_values([‘lcg‘, ‘http://lcgsmile.cn/‘, 1024])
Sets(集合)
集合是一个无序不重复元素的序列,用大括号 { } 或者 set() 函数创建。创建一个空集合必须用 set(),因为 { } 是用来创建一个空字典。
s = {‘name‘, ‘site‘, ‘code‘, 1, 1} print(s) # 输出集合,重复的元素被自动去掉
空值
空值是 Python 里一个特殊的值,用 None 表示。
补充
--没完待续--