第3章 python数据类型
Posted 岁月星空
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第3章 python数据类型相关的知识,希望对你有一定的参考价值。
1 概述
Python3中有6个标准的数据类型 |
||
1、Number(数字) |
2、String(字符串) |
3、List(列表) |
4、Tuple(元组) |
5、Set(集合) |
6、Dictionary(字典) |
不可变数据(3个) |
Number(数字)、String(字符串)、Tuple(元组)。 |
|
可变数据(3个) |
List(列表)、Dictionary(字典)、Set(集合)。 |
|
不可哈希(unhashable) |
就是指其可变,如列表、字典、集合,都能原地进行修改。 |
|
可哈希(hashable) |
就是指其不可变,如数字、字符串、元组那样,不能原地修改。 |
|
列表/字典/集合----> 不能放在集合中以及不能作为字典的key(原因:(unhashable)) |
2 数字(Number)
数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间。
Python3 支持 int、float、bool、complex(复数)。
整型(Int) - 通常被称为是整型或整数,是正或负整数,不带小数点。Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 Python3 没有 Python2 的 Long 类型。(在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中Long。)
浮点型(float) - 浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250)
复数( (complex)) - 复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。
注意:在 Python2 中是没有布尔型(True|False)的,它用数字 0 表示 False,用 1 表示 True。到 Python3 中,把 True 和 False 定义成关键字了,但它们的值还是 1 和 0,它们可以和数字相加。
内置的 type() 函数可以用来查询变量所指的对象类型。
a, b, c, d = 10, 5.2, True, 4+3j
print(type(a), type(b), type(c), type(d))
打印
<class \'int\'> <class \'float\'> <class \'bool\'> <class \'complex\'>
此外还可以使用 isinstance 来判断:
a= 10
A=isinstance(a, int)
print(A)
打印
True
Isinstance与type()函数的区别:
type()不会认为子类是一种父类类型。isinstance()会认为子类是一种父类类型。
class A:
pass
class B(A):
pass
A1=isinstance(A(),A)
A2=type(A()) == A
A3=isinstance(B(),A)
A4=type(B()) == A
print(A1,A2,A3,A4)
打印
True True True False
3 字符串(String)
字符串是一个有序的,不可修改的,使用引号( \' 或 " )包围的序列。说明:三引号 \'\'\' 字符串应用场景:换行
Var1=\'syxk\'
Var2="每天在坚持"
Var3="""学习Python,
为了诗和远方。"""
print(Var1+Var2+Var3)
打印
syxk每天在坚持学习Python,
为了诗和远方。
3.1 字符串格式化
在字符串当中已指定的格式符号迕行占位,然后我们将指定的数据传入字符串。
%s:字符串占位符
%d:数字占位符
%f:浮点型数字占位符
%.2f:控制浮点型数字占位符
3.1.1 %s字符串占位符
#1、打印:syxk在学习python。
name = input(\'姓名:\')
do = input(\'请输入课程名称:\')
template = \'%s在学习,%s。\'%(name,do,)
print(template)
#2、直接做占位符
template = "我是%s,年龄%s,职业%s。"%("syxk","24","运维",)
print(template)
#3、用%做占位符,要想打印出%,则必须是两个%%。
name = \'syxk\'
template = "%s现在手机的电量是80%%"%(name,)
print(template)
打印
syxk现在手机的电量是80%
#4、输出个人信息
""""""
name = input(\'请输入姓名:\')
age = input(\'请输入年龄:\')
job = input(\'请输入职业:\')
hobby = input(\'请输入爱好:\')
msg = """
-----------------info of syxk Lei--------------------
Name : %s
Age : %s
Job : %s
Hobbie : %s
---------------------end--------------------------
"""
print(msg%(name,age,job,hobby))
3.1.2 %d数字占位符
#打印整数
print(\'我今年%d岁了\'%(24))
运行结果:
我今年24岁了
3.1.3 %f浮点型数字占位符
#打印浮点数
print("我的身高是%fm"%(1.72))
运行结果:
我的身高是1.720000m
3.1.4 %.2f控制浮点型数字占位符
#打印符点数(保留两位小数)
print("我的身高是%.2fm"%(1.72))
运行结果:
我的身高是1.72m
3.1.5 其他
符号 |
描述 |
%c |
格式化字符及其ASCII码 |
%s |
格式化字符串 |
%d |
格式化整数 |
%u |
格式化无符号整型 |
%o |
格式化无符号八进制数 |
%x |
格式化无符号十六进制数 |
%X |
格式化无符号十六进制数(大写) |
%f |
格式化浮点数字,可指定小数点后的精度 |
%e |
用科学计数法格式化浮点数 |
%E |
作用同%e,用科学计数法格式化浮点数 |
%g |
%f和%e的简写 |
%G |
%F 和%E 的简写 |
%p |
用十六进制数格式化变量的地址 |
字符串格式化操作符辅助指令
符号 |
功能 |
* |
定义宽度或者小数点精度 |
- |
用做左对齐 |
+ |
在正数前面显示加号( + ) |
<sp> |
在正数前面显示空格 |
# |
在八进制数前面显示零(\'0\'),在十六进制前面显示\'0x\'或者\'0X\'(取决于用的是\'x\'还是\'X\') |
0 |
显示的数字前面填充\'0\'而不是默认的空格 |
% |
\'%%\'输出一个单一的\'%\' |
(var) |
映射变量(字典参数) |
m.n. |
m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话) |
3.2 字符串特殊字符
特殊字符就是在字符串当中起到特殊含义的字符。
符号 |
功能 |
\\(在行尾时) |
续行符 |
\\\\ |
反斜杠符号 |
\\\' |
单引号 |
\\\\\'\' |
双引号 |
\\a |
响铃(win会颤抖下,发出不明觉厉的声响) |
\\b |
退格(Backspace) |
\\000 |
空 |
\\n |
换行 |
\\v |
纵向制表符 |
\\t |
横向制表符 |
\\r |
回车 |
\\f |
换页 |
3.3 字符串特有功能(方法)
.upper() (全部改为大写)
.lower() (全部改为小写)
.isdigit() (判断是否是阿拉伯数字,以布尔数值返回结果,字符串中只要有非数字,输出结果都为False
.strip() (去除所有空格)/ .lstrip() (去除左侧空格) / .rstrip() (去除右侧空格)
.replace("被替换的内容","新内容",2) replace后写数字表示:替换几处
.split(\'分割标记\') / .split(\'分割标记\', 分割几处 ) / .rsplit()
.startswith() / .endswith() (.startswith()判断是否以某某开头,.endswith()判断是否以某某结尾)
.format() 字符串格式化(Python2.6开始)
.encode() 编码将unicode编码转换成其他类型的编码。.decode()解码
.join() 循环每个元素,并在元素与元素之间加入连接符
上述功能使用过程说明:生成新的值来接收.
3.3.1 .upper()及.lower(),判断大小写
1、要求:将小写的syxk打印成大写SYXK.
错误写法:
value = \'syxk\'
value.upper()
print(value)
打印
syxk
2、要求:将SyXK中大写的字母全部换成小写字母syxk
value = \'SyXK\'
new_value = value.lower()
print(new_value)
打印
syxk
3.3.2 .isdigit(),判断是否为阿拉伯数字
.isdigit() (判断是否是阿拉伯数字,以布尔数值返回结果,字符串中只要有非数字,输出结果都为False)
print(\'12345\'.isdigit())
打印
True
print(\'1a45\'.isdigit())
打印
False
3.3.3
正确写法:
value = \'syxk\'
new_value = value.upper()
print(new_value)
打印
SYXK
3.3.3 .strip()/.lstrip()/.rstrip(),去除空格
.strip() (去除所有空格)/ .lstrip() (去除左侧空格) / .rstrip() (去除右侧空格)
1、输入:" syxk "
user = input(\'请输入用户名:\') # " syxk "
new_user1 = user.rstrip()
print(\'---->\',new_user1,\'<-----\')
new_user2 = user.lstrip()
print(\'---->\',new_user2,\'<-----\')
# 或
new_user2 = user.strip()
data = new_user2.upper()
print(\'---->\',data,\'<-----\')
打印(注:蓝色框框,是空格)
3.3.4 .replace(),替换
.replace("被替换的内容","新内容",2) replace后写数字表示:替换几处
1、输入:"我是sysxsyxksyxk"
message = input(\'请输入姓名:\')
# print(message) # "syxksyxksyxk"
# data = message.replace(\'syxk\',"**")
data = message.replace(\'syxk\',"**",2)
print(data)
打印
请输入姓名:syxksyxksyxk
****syxk
3.3.5 .split()/rsplit(),分割标记
.split(\'分割标记\') / .split(\'分割标记\', 分割几处 ) / .rsplit()
1、要求:用逗号进行分割syxk现在一脸懵逼,因为晚上一直在学习,直到深夜。
message = "syxk现在一脸懵逼,因为晚上一直在学习,直到深夜。"
result1 = message.split(\',\')
result2 = message.split(\',\',1)
result3 = message.rsplit(\',\')
result4 = message.rsplit(\',\',1)
print(result1)
print(result2)
print(result3)
print(result4)
打印
[\'syxk现在一脸懵逼\', \'因为晚上一直在学习\', \'直到深夜。\']
[\'syxk现在一脸懵逼\', \'因为晚上一直在学习,直到深夜。\']
[\'syxk现在一脸懵逼\', \'因为晚上一直在学习\', \'直到深夜。\']
[\'syxk现在一脸懵逼,因为晚上一直在学习\', \'直到深夜。\']
3.3.6 .startswith() / .endswith()
.startswith() / .endswith() (.startswith()判断是否以某某开头,.endswith()判断是否以某某结尾)
1、判断是否以某某开头
#方法一:
name = \'syxk\'
name = name[0:2]
if name == \'sy\':
print(\'是以sy开头\')
else:
print(\'不是以sy开头\')
打印
是以sy开头
#方法二:
name = \'syxk\'
name = name.startswith(\'sy\')
print(name)
打印
True
3.3.7 .format() 字符串格式化
name = \'我叫:{0},年龄:{1}岁\'.format(\'syxk\',23)
print(name)
打印
我叫:syxk,年龄:23岁
3.3.8 .encode() 编码/.decode()解码
.encode() 编码将unicode编码转换成其他类型的编码。.decode()解码
name = \'岁月星空\' #解释器读取后,按照unicode编码存储:8个字节
v1 = name.encode(\'utf-8\')
print(v1)
v2 = name.encode(\'gbk\')
print(v2)
v3 = v1.decode(\'utf-8\')
print(v3)
v4 = v2.decode(\'gbk\')
print(v4)
打印
b\'\\xe5\\xb2\\x81\\xe6\\x9c\\x88\\xe6\\x98\\x9f\\xe7\\xa9\\xba\'
b\'\\xcb\\xea\\xd4\\xc2\\xd0\\xc7\\xbf\\xd5\'
岁月星空
岁月星空
3.3.9 .join()
.join() 循环每个元素,并在元素与元素之间加入连接符
name = \'syxk\' #s_y_x_k
result = \'_\'.join(name)
print(result)
打印
s_y_x_k
3.3.10 其他
3.4 字符串公共功能(方法)
Len长度
计算长度。(字符串->计算字符串中的字符个数)
Index索引
索引(取值)
(左侧0作为开始,右侧-1开始,超出范围报错)
索引(切片)
如:v[2:3] #2 <=索引位置 < 3
索引(步长)
如:v[2:-1:2]
上述功能使用过程说明:生成新的值来接收.
注意:公共功能(不是指和整型和布尔类型公共, 整型和布尔类型无法使用.)
3.4.1 Len,计算长度
计算长度。(字符串->计算字符串中的字符个数)
value = \'syxk\'
number = len(value)
print(number)
print(type(number))
打印
4
<class \'int\'>
3.4.2 Index,索引
(左侧0作为开始,右侧-1开始,超出范围报错)
3.4.2.1 索引(取值)
value = \'syxk\'
# 索引 0123 #0 1 2 3 ...从左往右
v1 = value[1]
print(v1)
#输出结果为 y
value = \'syxk\'
# 索引 -4-3-2-1
v1 = value[-1] #-1 -2 -3 ...从右往左
print(v1)
#输出结果为k
#注意,当value值为4以上(-5以下)时,就会报错,索引位置超出了范围
3.4.2.2 索引(切片)
v = \'syxksyxk\'
v1 = v[2:3] #2 <=索引位置 < 3
print(v1)
# 输出结果x
v2 = v[2:]
print(v2)
# 输出结果xksyxk
v3= v[:-1]
print(v3)
# 输出结果syxksyx
3.4.2.3 索引(步长)
name = \'syxksyxk\'
val = name[0:-1:2]
print(val)
#输出结果sxsx
val = name[1:-1:2]
print(val)
#输出结果yky
val = name[1::2]
print(val)
#输出结果ykyk
val = name[::2]
print(val)
#输出结果sxsx
val = name[-1:0:-1Python开发入门14天集训营·第2章Python 数据类型字符编码学习-3级菜单