文章目录
一、Python的六大数据类型
- 数字(Number)
- 字符串(String)
- 元组(Tuple)
- 列表(List)
- 集合(Set)
- 字典(Dictionary)
Python的数据类型分为可变和不可变数据类型:
- 可变的:列表、集合、字典(可以进行更改,并且更改后物理地址不会发生改变)
- 不可变的:数字、字符串、元组(不可以进行更改,更改后就是一个新的对象了,物理地址发生了变化)
二、数据类型 :Number-数字
1.数字类型的分类及其类型转化
在数学中,有多种数据类型,在Python中数字类型也有多种,大概分为以下4类:
名称 | 英文标识 | 解释 | 举例 |
---|---|---|---|
整型 | int | 通常被称为是整型或整数,是正或负整数,不带小数点。Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 Python3 没有 Python2 的 Long 类型。 | 5,6 |
浮点型 | float | 浮点型由整数部分与小数部分组成。 | 5.22222 |
布尔型 | bool | 含义True和False,True转换为1,False转换为0,但是反之除 0为False类型,其他数字为True类型 | True、False |
复数型 | complex | 形如a+bi(a为复数实部,b为复数虚部) | 1+2i |
这四种类型的复杂度:bool<int<float<complex
并且这些数字类型之间可以进行相互转换:
注意:
1.在数字类型中,0或者0.0转换为bool类型为False , 其他为True
2.而True转为int类型为1,,False转换为int为0
2.数字类型之间的数学运算
既然是数字类型,那么就可以进行一些数学运算,例如a=20,b=10
3.数字间的进制转换
既然是数字,就会有各种进制,例如2进制,8进制等等
① 计算机中展示进制
进制 | 表示 |
---|---|
二进制 | 0b表示, 用0,1 表示 |
八进制 | 0o表示, 用0-7 表示 |
十六进制 | 0x表示, 用0-9和A-F 表示 |
② 进制转换
a进制转换为b进制 | 函数 |
---|---|
其他进制转换为二进制 | bin() |
其他进制转换为八进制 | oct() |
其他进制转换为十六进制 | hex() |
举例:十进制转换为其他进制的函数
举例:其他进制转换为十进制
三、数据类型 :String-字符串
字符串在 Python中的表现形式为单/双/三引号的形式:
'我是字符串1,我是单引号引起来的'
"我是字符串2,我是双引号引起来的"
"""
我是字符串3,
我可以换行,
同时我也是注释,
我也可以用三个单引号
"""
1.字符串的运算及其切片
字符串也可以进行一些简单的运算
# -----------------------------------------拼接
a = '123'
b = '456'
print(a + b) # 123456
# ------------------------------------------重复
c = '123'
print(c * 3) # 123123123
# -----------------------------------------打散
a, *b = '12345' # *此处具有打散功能
print(a, b) # 1 ['2', '3', '4', '5']
# -----------------------------------------分配
c, d = '12'
print(c, d) # 1 2
如果一个字符串我们想取其中的几个字符,那么就可以通过切片的方式获取
a = '123abcd'
print(a[0: 5]) # ---------------------------123ab
print(a[:4]) # ----------------- 123a
print(a[1:]) # -------------- 23abcd
print(a[:]) # 等同于直接输出a
print(a[::3]) # -------------- 1ad
print(a[3::3]) # ---------------ad
print(a[:4:3]) # ------------------------------- 1a
print(a[3:0:-1]) # -------------------a,3,2,使用步长-1,注意起始位置
print(a[::-1]) # ---------------------倒序dcba321
print(a[-1:-5:-2]) # ------------------------db
a = '123456789'
print(a[-8:5]) # -----------------------2345
print(a[0:-5]) # -------------------1234
print(a[-5:-1:1]) # -------------------------5678
print(a[-1:-5:-1]) # ----------------------------9876
2.字符串的常见函数
序号 | 方法及描述 |
---|---|
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)) 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False. |
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]) 把 将字符串中的 old 替换成 new,如果 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)) 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串 |
32 | [splitlines(keepends]) 按照行(‘\r’, ‘\r\n’, \n’)分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。 |
33 | startswith(substr, beg=0,end=len(string)) 检查字符串是否是以指定子字符串 substr 开头,是则返回 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。 |
3.字符串的format格式化函数
1.输出普通参数
name = '蔡徐坤'
age = 18
# -------------按顺序
print('名字{},年龄{}'.format(name, age)) # 名字蔡徐坤,年龄18
# ------------按指定顺序
print('名字{0},{0}的年龄{1}'.format(name, name, age)) # 名字蔡徐坤,蔡徐坤的年龄18
# -------------按变量名称
print('名字{name},年龄{age}'.format(name=name, age=age)) # 名字蔡徐坤,17
# --------------f写法,和变量名称类似
print(f'名字{
name},年龄{
age}') # 名字蔡徐坤,18
2.格式化修饰
符号 | 表示 |
---|---|
: | 后边为将于格式化的写法 |
5 | 表示总字符长度为5 |
^ | ^表示要居中,< 表示字体居左,>表示字体居右 |
& | 表示,填充字符,不够长度的用*号表示 |
举例:
a='我叫{:&^5}'.format('蔡徐坤')#^居中
b='我叫{:&<5}'.format('蔡徐坤')#<居左
c='我叫{:&>5}'.format('蔡徐坤')#>居右
print(a)#---------------------------------------我叫&蔡徐坤&
print(b)#---------------------------------------我叫蔡徐坤&&
print(c)#---------------------------------------我叫&&蔡徐坤
3.输出二进制,八进制,十六进制
# ----------------------------------------------输出二进制
a = '5的二进制为{:b}'.format(5) # 二进制用b
print(a) # ---------------5的二进制为101
# --------------------------------------------------输出八进制
b = '20的八进制为{:o}'.format(20) # 八进制用o
print(b) # 20的八进制为24
# -------------------------------------------------输出十六进制
c = '34的十六进制为{:x}'.format(34) # 十六进制用x
print(c) # 34的十六进制为22
4.字符串格式化和百分号
name,age,height='张三',18,1.75
print('我叫%s,年龄%d,身高%.2f'%(name,age,height)) # %.2f代表保留小数点后两位
# 我叫张三,年龄18,身高1.75
print('%.2f%%'%(0.23)) # %%为数学中的一个%-----------------0.23%
符号大全:
四、数据类型 :List-列表
关于列表就是一个有序的序列,在python中创建的几种方式
[1, 2 ,3 , 4 ]
# 创建空列表
[]
list()
1.列表的常见函数
序号 | 方法 | 说明 |
---|---|---|
1 | list.append(obj) | 在列表末尾添加新的对象 |
2 | list.count(obj) | 统计某个元素在列表中出现的次数 |
3 | list.extend(seq) | 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) |
4 | list.index(obj) | 从列表中找出某个值第一个匹配项的索引位置 |
5 | list.insert(index, obj) | 将对象插入列表 |
6 | list.pop(index) | 值为索引,移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
7 | list.remove(obj) | 值为删除值,移除列表中某个值的第一个匹配项 |
8 | list.reverse() | 反向列表中元素 |
9 | list.sort(cmp=None, key=None, reverse=False) | 对原列表进行排序,无返回值(sorted函数是Python的函数,有返回值),reverse默认为False升序 |
2.列表的一些函数使用
①获取列表某几项:
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 正索引获取一项
print(a[0]) # 1
print(a[3]) # 4
# 负索引获取一项
print(a[-1]) # 9
print(a[-3]) # 7
# 正索引获取多项
print(a[1:5]) # [2, 3, 4, 5]
# 负索引获取多项
print(a[-5:-1]) # [5, 6, 7, 8]
②列表的遍历与长度
a = [1, 3, 4]
print('a列表的长度为:', len(a)) # 3
# ---------普通循环使用range方法
for i in range(len(a)):
print("当前索引为{},是列表的第{}个元素,值为{}".format(i, i + 1, a[i]))
"""
当前索引为0,是列表的第1个元素,值为1
当前索引为1,是列表的第2个元素,值为3
当前索引为2,是列表的第3个元素,值为4
"""
# -----------------直接循环列表
for i in a:
print(i)
"""
1
3
4
"""
# ----------------带索引的循环用
for index, i in enumerate(a):
print("当前索引为{},是列表的第{}个元素,值为{}".format(index, i + 1, i))
"""
当前索引为0,是列表的第2个元素,值为1
当前索引为1,是列表的第4个元素,值为3
当前索引为2,是列表的第5个元素,值为4
"""
③列表的拼接,重复
a = [1, ]
b = [2, 3]
print(a + b) # [1,2,3]
print(a * 3) # [1,1,1]
print(a[0] + b[0]) # 3
④列表的添加【append,extend,insert】
方法名 | 使用方式 |
---|---|
append() | 在列表末尾添加一个元素, 格式: m.append(元素A) |
extend() | 对于特定列表的扩展和增长,可以一次添加多个元素,不过也只能添加在列表的最后;格式:m.extend([A,B,…]) |
insert() | 在列表的特定位置插入想要添加的特定元素,这里的特定位置是指元素所在列表中的索引 格式: m.insert(A,元素B):表示在列表m的索引A位置变为元素B,其他元素顺序后移 |
a = [1, 2, 3, 4, 5,]
a.append(7)#在尾部追加一个
print(a) # [1,2,3,4,5,7]
b=['a','b']
a.extend(b)#extend可以将另一个列表插入
print(a) # [1,2,3,4,5,7,'a','b']
a.insert(1,'x')#在索引一的位置加个’x'
print(a) [1,'x',2,3,4,5,7,'a','b']
⑤列表的删除【pop,del,remove】
- pop()可以添加索引,不添加默认弹出最后一个数
- remove必须传入要删的数,删除从左到右的第一个数
- del 内置方法
a = [1, 2, 3, 4, 5,]
a.pop()#会删除最后一个数,并且输出删除的这个元素
a.pop(2)#会删除索引为2的数,并且输出删除的这个元素
a = [1, 2, 3, 4, 5,]
a.remove(3)#删除的是第一个遇到的3,并非索引位置
print(a)
a = [1, 2, 3, 4, 5,]
del a[2]#删除对应索引或者整个列表
print(a)
⑥列表的修改,直接复制
a = [1, 2, 3, 4, 5,]
a[2]='xx' # 直接将对应索引更改为自己修改的值即可
print(a) # [1,2,'xx',4,5]
3.列表函数操作的时间复杂度
4.深拷贝和浅拷贝
- 深拷贝:完全复制一份到新的地址,互相修改不受影响
- 浅拷贝:粗略复制,对于内部的可变类型,互相修改还会变化,因为内部的可变类型还是同一块内存地址
import copy
a=[1,2,3,[4,5],6]
b=a
c=copy.copy(a)#浅拷贝,将列表粗略考走,列表内部的列表会随着a中内部的列表变化,即内部列表还指向【4,5】
d=copy.deepcopy(a)#深拷贝,完全复制一份a,创立了一块新的地址,互相修改不会变化
a.append('00000')
a[3].append('x')
print(a,id(a))
print(b,id(b))
print(c,id(c))
print(d,id(d))
结果:
今天的文章python6种数据类型_python的三种数据类型[通俗易懂]分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/65664.html