Python
中的一些经常使用的数据类型Python
中的一些经常使用的模块Python
中数学运算经常使用的函数基本都在 math
模块、cmath
模块中。math
模块提供了许多对浮点数的数学运算函数。cmath
模块包含了一些用于复数运算的函数。cmath
模块的函数跟 math
模块函数基本一致,区别是 cmath
模块运算的是复数,math
模块运算的是数学运算。math
或 cmath
函数必须先导入:import math
# 或者
import cmath
复制代码
在math
模块中定义了三个数学常量python
# 天然常数 e
e = 2.718281828459045
# 圆周率,通常以π来表示
pi = 3.141592653589793
# 2π
tau = 6.283185307179586
复制代码
要直接访问的,须要导入 math
模块, 而后经过 math 静态对象调用方法git
函数 | 描述 |
---|---|
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) | 将角度转换为弧度 |
函数 | 返回值 ( 描述 ) |
---|---|
abs(x) | 返回数字的绝对值,如abs(-12) 返回 12 |
ceil(x) | 返回数字的上入整数(小数向上取整),如math.ceil(4.1) 返回 5, math.ceil(4.0) 返回 4 |
cmp(x, y) | 若是 x < y 返回 -1, 若是 x == y 返回 0, 若是 x > y 返回 1; (Python在3.x中已经弃用) |
exp(x) | 返回e的x次幂, 如math.exp(2) 返回7.38905609893065 |
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相同,整数部分以浮点型表示; 如:math.modf(99.09) , 返回(0.09000000000000341, 99.0) |
pow(x, y) | x**y 运算后的值。 |
round(x [,n]) | 返回浮点数x的四舍五入值,如给出n值,则表明舍入到小数点后的位数; 如round(90.09, 1)输出:90.1; 如:round(90.09) 输出:90 |
sqrt(x) | 返回数字x的平方根, 如:math.sqrt(4) 返回 2.0 |
abs()
和 fabs()
区别
abs()
是一个内置函数,而fabs()
在math
模块中定义的。fabs()
函数只适用于float
和integer
类型,而abs()
也适用于复数random
模块,而后经过 random
静态对象调用函数方法Python
包含如下经常使用随机数函数:从序列(元组, 列表, 字符串)的元素中随机挑选一个元素github
import random
random.choice( seq )
# 测试用例
# 从序列的元素中随机挑选一个元素
print(random.choice((1, 3, 5, 2)))
print(random.choice([1, 2, 3, 4]))
# 随机返回一个字符
print(random.choice("titanjun"))
复制代码
返回指定递增基数集合中的一个随机数,默认基数缺省值为1, 默认类型为int算法
randrange(self, start, stop=None, step=1, _int=int)
复制代码
start
-- 指定范围内的开始值,包含在范围内。stop
-- 指定范围内的结束值,不包含在范围内。step
-- 指定递增基数# 输出 100 <= number < 1000 间的随机偶数 print(random.randrange(100, 1000, 2)) 复制代码
随机生成的一个实数,它在[0,1)范围内api
print(random.random())
复制代码
该函数没有返回值, 改变随机数生成器的种子, 可生成同一个随机数安全
random.seed(5)
print(random.random())
random.seed()
print(random.random())
复制代码
# 将序列的全部元素随机排序
list1 = [1, 2, 3, 4]
random.shuffle(list1)
print(list1)
复制代码
print(random.uniform(2, 5))
复制代码
上一篇文章Python数据类型详解01介绍了字符串的一些基础知识, 这里就主要介绍字符创中经常使用的函数和语法dom
in
和 not in
判断字符串是否包含指定字符串函数
# 判断字符串中是否包含某字符串
str = 'Hello Python'
if ('llo' in str):
str += ' True'
else:
str += ' False'
print(str)
# 判断字符串是否不包含某字符串
if ('py' not in str):
str += ' not in'
else:
str += ' in'
print(str)
// 分别输出
Hello Python True
Hello Python True not in
复制代码
把其余类型的数据格式化为字符串形式返回, 字符串和其余类型之间要有%
分开学习
符号 | 描述 |
---|---|
%c |
格式化字符及其ASCII码 |
%s |
格式化字符串 |
%d |
格式化整数 |
%u |
格式化无符号整型 |
%o |
格式化无符号八进制数 |
%x |
格式化无符号十六进制数 |
%X |
格式化无符号十六进制数(大写) |
%f |
格式化浮点数字,可指定小数点后的精度 |
%e |
用科学计数法格式化浮点数 |
%E |
做用同%e,用科学计数法格式化浮点数 |
%g |
%f和%e的简写 |
%G |
%f 和 %E 的简写 |
%p |
用十六进制数格式化变量的地址 |
使用方式测试
print('che is %d' % 19)
// 跟C语言的写法
prin他("che is %d", 19)
复制代码
str.format()
函数Python2.6
开始,新增了一种格式化字符串的函数 str.format()
,它加强了字符串格式化的功能。 基本语法是经过 {}
和 :
来代替之前的 %
。format
函数能够接受不限个参数,位置能够不按顺序。简单使用
# format函数
# 不设置指定位置,按默认顺序
str1 = '{} {}'.format('hello', 'python')
print(str1)
# 设置指定位置
str2 = '{0}{1}'.format('Python', '字符串')
print(str2)
# 设置指定位置
str3 = '{1} {0} {1}'.format('hello', 'che')
print(str3)
# 设置参数
print("姓名: {name}, 年龄: {age}".format(name='che', age=18))
# 设置字典参数
dic = {'name': 'jun', 'age': 20}
print("姓名: {name}, 年龄: {age}".format(**dic))
# 设置列表参数
list0 = ['titan', 20]
print("姓名: {0[0]}, 年龄: {0[1]}".format(list0))
/*输出结果
hello python
Python字符串
che hello che
姓名: che, 年龄: 18
姓名: jun, 年龄: 20
姓名: titan, 年龄: 20
*/
复制代码
相关操做符具体的使用后面再说
符号 | 功能 |
---|---|
* |
定义宽度或者小数点精度 |
- |
在负数前面显示加号( - ) |
+ |
在正数前面显示加号( + ) |
# |
在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'仍是'X') |
0 |
显示的数字前面填充'0'而不是默认的空格 |
% |
%% 输出一个单一的'%' |
m.n. |
m 是显示的最小总宽度,n 是小数点后的位数(若是可用的话) |
: |
后面带填充的字符,只能是一个字符,不指定则默认是用空格填充 |
{{}} |
转义大括号, 相似%的输出 |
数字 | 格式 | 输出 | 描述 |
---|---|---|---|
3.1415926 | {:.2f} |
3.14 | 保留小数点后两位 |
3.1415926 | {:+.2f} |
+3.14 | 带符号保留小数点后两位 |
-1 | {:+.2f} |
-1.00 | 带符号保留小数点后两位 |
2.71828 | {:.0f} |
3 | 不带小数 |
5 | {:0>2d} |
05 | 数字补零 (填充左边, 宽度为2) |
5 | {:x<4d} |
5xxx | 数字补x (填充右边, 宽度为4) |
10 | {:x<4d} |
10xx | 数字补x (填充右边, 宽度为4) |
1000000 | {:,} |
1,000,000 | 以逗号分隔的数字格式 |
0.25 | {:.2%} |
25.00% | 百分比格式 |
1000000000 | {:.2e} |
1.00e+09 | 指数记法 |
13 | {:10d} |
13 | 右对齐 (默认, 宽度为10) |
13 | {:<10d} |
13 | 左对齐 (宽度为10) |
13 | {:^10d} |
13 | 中间对齐 (宽度为10) |
进制转换(以十进制数字11为例)
进制 | 格式 | 输出 |
---|---|---|
二进制 | '{:b}'.format(11) |
1011 |
十进制 | '{:d}'.format(11) |
11 |
八进制 | '{:o}'.format(11) |
13 |
十六进制 | '{:x}'.format(11) |
b |
小写十六进制 | '{:#x}'.format(11) |
0xb |
大写十六进制 | '{:#X}'.format(11) |
0XB |
print('百分比: %d%%' % 23)
print('{}索引值: {{0}}'.format('jun'))
print('{:#x}'.format(9))
print('{:#X}'.format(9))
/*输出结果:
百分比: 23%
jun索引值: {0}
0x9
0X9
*/
复制代码
下列方法实现了string
模块的大部分方法,以下表所示列出了目前字符串内建支持的方法,全部的方法都包含了对Unicode
的支持,有一些甚至是专门用于Unicode
的
方法 | 返回结果 | 描述 |
---|---|---|
'titan'.capitalize() |
Titan | 把字符串的第一个字符大写 |
'hello\tpython'.expandtabs() |
hello python | 把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 |
str5.find('irl') |
11 | 检测 str 是否包含在 string 中,若是 beg 和 end 指定范围,则检查是否包含在指定范围内,若是是返回开始的索引值,不然返回-1 |
str5.rfind('irl') |
11 | 同find方法, 从右向左查询 |
str5.index('gi') | 10 | 跟find()方法同样,只不过若是str不在 string中会报一个异常. |
str5.rindex('gi') | 10 | 同index方法, 从右向左查询 |
'jun0929'.isalnum() |
True | 至少有一个字符而且全部字符都是字母或数字则返回 True,不然返回 False |
'titan'.isalpha() |
True | 至少有一个字符而且全部字符都是字母则返回 True,不然返回 False |
u'23e'.isdecimal() |
False | 字符串只包含十进制字符返回True,不然返回False(只针对unicode对象) |
"123456".isdigit() |
True | 字符串只包含数字则返回 True 不然返回 False |
'23e'.islower() |
True | 字符串中包含至少一个区分大小写的字符,而且全部这些(区分大小写的)字符都是小写,则返回 True,不然返回 False |
u"23443434"isnumeric() |
True | 字符串中只包含数字字符,则返回 True,不然返回 False(只针对unicode对象) |
" ".isspace() |
True | 字符串中只包含空格,则返回 True,不然返回 False. |
'JING'.isupper() |
True | 字符串中包含至少一个区分大小写的字符,而且全部这些(区分大小写的)字符都是大写,则返回 True,不然返回 False |
'-'.join( ['a', 's', 'd'] ) |
a-s-d | 用于将序列中的元素以指定的字符链接生成一个新的字符串 |
'THIS'.lower |
this | 返回将字符串中全部大写字符转换为小写后生成的字符串 |
"88this".lstrip('8') |
this | 返回截掉字符串左边的空格或指定字符后生成的新字符串 |
'this88'.rstrip('8') |
this | 返回截掉字符串右边的空格或指定字符后生成的新字符串 |
max('python') |
z | 返回字符串中最大的字母 |
min('python') |
h | 返回字符串中最小的字母 |
'https://www.titanjun.top'.partition('://') |
('https', '://', 'www.titanjun.top') | 返回一个3元的元组,第一个为分隔符左边的子串,第二个为分隔符自己,第三个为分隔符右边的子串 |
'this'.startswith('th', 1, 4) |
False | 检查字符串在制定范围内是不是以指定子字符串开头 |
"0jun0".strip('0') |
jun | 返回移除字符串头尾指定的字符生成的新字符串 |
'Python'.swapcase() |
pYTHON | 返回大小写字母转换后生成的新字符串 |
'hello python'.title() |
Hello Python | 返回全部单词都是以大写开始 |
'jun'.upper() |
JUN | 返回小写字母转为大写字母的字符串 |
除了以上方法外还有下列重要方法
返回子字符串在字符串中出现的次数
str.count(sub, start= 0,end=len(string))
//使用
print('hello world'.count('l', 1, 8))
print('hello world'.count('l'))
//输出:
2
3
复制代码
sub
-- 搜索的子字符串start
-- 字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0。end
-- 字符串中结束搜索的位置。字符中第一个字符的索引为 0。默认为字符串的最后一个位置。返回一个原字符串居中,并使用空格填充至长度 width 的新字符串。默认填充字符为空格
str.center(width, fillchar)
//使用
>>> str = 'titan'
>>> str.center(8, '-')
'--titan---'
>>> str.center(9)
' titan '
>>>
复制代码
fillchar
参数则默认为空格width
参数小于等于原字符串的长度时,原样返回以 encoding 指定的编码格式编码字符串。errors参数能够指定不一样的错误处理方案
str.encode(encoding='UTF-8',errors='strict')
//示例
'titan'.encode('UTF-8','strict')
//输出: b'titan'
复制代码
encoding
-- 要使用的编码,如"UTF-8"。errors
-- 设置不一样错误的处理方案。默认为 strict
,意为编码错误引发一个UnicodeError
。 其余可能得值有 ignore
, replace
, xmlcharrefreplace
, backslashreplace
以及经过 codecs.register_error()
注册的任何值。用于判断字符串是否以指定后缀结尾,若是以指定后缀结尾返回True,不然返回False
str.endswith(suffix[, start[, end]])
//使用示例
str5 = 'her is my girl friend haha!!'
print(str5.endswith('!!'))
print(str5.endswith('ha', 0, len(str5) - 2))
//输出结果: 都是True
复制代码
suffix
-- 该参数能够是一个字符串或者是一个元素start
-- 字符串中的开始位置, 可不传end
-- 字符中结束位置, 可不传ljust()
: 返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。若是指定的长度小于原字符串的长度则返回原字符串rjust()
: 返回一个原字符串右对齐width
-- 指定字符串长度。fillchar
-- 填充字符,默认为空格str.ljust(width[, fillchar])
str.rjust(width[, fillchar])
//测试用例
str = "this is string example....wow!!!";
print str.ljust(50, '0');
print str.rjust(50, '0');
//输出:
this is string example....wow!!!000000000000000000
000000000000000000this is string example....wow!!!
复制代码
返回字符串中的 old(旧字符串) 替换成 new(新字符串)后生成的新字符串,若是指定第三个参数max,则替换不超过 max 次
str.replace(old, new[, max])
//测试
str = 'Python is a good language!'
print(str7.replace('o', 'i', 2))
//输出:
Pythin is a giod language!
复制代码
经过指定分隔符对字符串进行切片,若是参数 num 有指定值,则仅分隔 num 个子字符串
str.split(str="", num=string.count(str))
//测试
str7 = 'Python is a good language!'
print(str7.split(' '))
print(str7.split(' ', 3))
//输出:
['Python', 'is', 'a', 'good', 'language!']
['Python', 'is', 'a', 'good language!']
复制代码
按照行('\r', '\r\n', \n'
)分隔,返回一个包含各行做为元素的列表,若是参数 keepends 为 False,不包含换行符,若是为 True,则保留换行符
str.splitlines([keepends])
//测试
str8 = 'ab c\n\nde fg\rkl\r\n'
print(str8.splitlines())
str9 = 'ab c\n\nde fg\rkl\r\n'
print(str9.splitlines(True))
//输出:
['ab c', '', 'de fg', 'kl']
['ab c\n', '\n', 'de fg\r', 'kl\r\n']
复制代码
Python
语言, 我也正在努力学习中, 文中若有不足之处, 还望多多指教