用了Python很久了,可是一直没有系统的学习、记录、笔记,这次打算从头开始学习Python基础,打下坚实的基础后再通过《流畅的Python进阶》进阶。
数字类型
- Python的基本数据类型包括了:数字(Digit)、字符(String)、列表(List)、元组(Tuple)、集合(Sets)、字典(Dictionary)、日期(date)。
- 数字类型
- 整型:Python3中,已不区分长整型和短整型(在Python2中,长整形需要加上l)
- 浮点型:和整型的区别在于是否有"."
- 布尔型(特殊的整型):0 False,1 True;True / True # 1.0
数据类型转换函数
-
int()
不是采用四舍五入的方法,而是采用速度最快的“截断”。想要达到四舍五入的效果,可以按照+0.5的方式进行操作。以下使用了函数round()、ceil()、floor()。int() # 0 int(5.99) # 5 int('12',16) # 如果是带参数base的话,12要以字符串的形式进行输入,12 为 16进制 int('0xa',16) # 10 int('10',8) # 8 int(5.4+0.5) # 5 int(5.6+0.5) # 5 # 四舍五入保留指定位数的小数 import decimal tmp = decimal.Decimal("0.835126") print(round(a,5)) # 0.83513 # 向上取整,向下取整 import math print(math.ceil(3.2)) # 4 print(math.floor(3.8)) # 3
-
fload()
Python没有double(),float()默认一位小数,使用float(’%.5f’ % a)可以指定四舍五入保留5位小数。
其中float()用的是C里面的double实现,float的精度和范围受你的硬件限制,如下:print(sys.float_info) #查看硬件支持float()的精度范围 """sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)"""
如果要求用的精度高过硬件,可以用decimal.Decimal来表示浮点数,Decimal是用软件模拟精度的,精度不受限制,只是运算会比本来的float慢。
-
str()
当str已被当作变量使用,即不能再次使用str()函数,否则会报错。
获取数据类型函数
- type()
获取数据类型:type(a) # <class 'decimal.Decimal'> type(True) # <class 'bool'> type(5e15) # <class 'float'> type('520') # <class 'str'>
- isinstance()
Python更推荐使用这种方法进行获取类型。isinstance(a,decimal.Decimal) # True isinstance(True,bool) # True isinstance(5e15,float) # True isinstance('520',str) # True
字符串
Python中的字符串包括了数字、字幕、中文字符、特殊字符,以及一些不可见的控制字符(如换行符和制表符)。
字符串的API
- 常见的字符串的API如下表:
函数名 | 作用 |
---|---|
capitalize() | 将字符串的第一个字符转换为大写 |
count(str, beg= 0,end=len(string)) | 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数 |
bytes.decode(encoding=“utf-8”, errors=“strict”) | Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。 |
encode(encoding=‘UTF-8’,errors=‘strict’) | 以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是’ignore’或者’replace’ |
endswith(suffix, beg=0, end=len(string)) | 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False. |
find(str, beg=0 end=len(string)) | 检测 str 是否包含在字符串中 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1 |
index(str, beg=0, end=len(string)) | 跟find()方法一样,只不过如果str不在字符串中会报一个异常. |
len(string) | 返回字符串长度 |
split(str=", num=string.count(str)) | num=string.count(str)) 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num 个子字符串 |
lower()、upper( | 转换字符串中所有大写字符为小写、大写. |
max(str)、min(str) | 返回字符串 str 中最大、最小的字母。 |
lstrip()、rstrip() | 转截掉字符串左、右边的空格 |
strip() | 转截掉字符串两边的空格 |
replace(old, new [, max]) | 把 将字符串中的 str1 替换成 str2,如果 max 指定,则替换不超过 max 次。 |
startswith(str, beg=0,end=len(string)) | 检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。 |
swapcase() | 将字符串中大写转换为小写,小写转换为大写 |
splitlines([keepends]) | 按照行(’ ’, ‘ ’, ’)分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。 |
join(seq) | 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
isalnum() | 如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False |
isdigit() | 如果字符串只包含数字则返回 True 否则返回 False… |
isnumeric() | 如果字符串中只包含数字字符,则返回 True,否则返回 False |
>>> a.isdigit()
True
>>> a.isalnum()
True
>>> a = '12a'
>>> a.isalnum()
True
>>> a.isdigit()
False