今日内容概要
-
数据类型内置方法理论
-
整型相关操作
-
浮点型相关操作
-
字符串相关操作
-
列表相关操作
-
可变与不可变
今日内容详细
数据类型内置方法理论
数据类型的内置方法,数据类型我们知道总共有八种,但是每个数据类型中间还有一些内置元素,接下来我们一一介绍每一个的用法。 内置方法可以简单的理解成是每个数据类型自带的功能(每个人的不同特长)
在python中数据类型调用内置的方法统一的句式为:句点符
# 使用方法
'jack'.字符串内置方法 # 直接使用字符串使用内置方法
name = 'jack'
name.字符串内置方法 # 也可以使用绑定了字符串的变量名
str.字符串内置方法
'''数据类型的内置方法比较多,如果想要掌握,不能光靠死记硬背,更多的时候靠的是熟能生巧'''
整型内置方法与操作
类型转换(将其他数据类型转换成整型)
# 使用方法
int(其他数据类型)
# 举例
print(int('11'))
print(int(11.11))
# 输出结果
11
11
'''注意浮点型可以直接转,字符串转换成整型需要内部是纯数字'''
进制数转换
十进制转换其他进制
print(bin(100)) # 转换成二进制 0b1100100
print(oct(100)) # 转换成八进制 0o144
print(hex(100)) # 转换成十六进制 0x64
'''数字的开头如果是0b则为二进制 0o则为八进制 0x则为十六进制'''
其他进制转换十进制
int(其他进制)
print(int(0x64)) # 100
当要转换的进制为字符串时需要添加条件告诉int要这是什么进制
print(int('0x64')) # 错误方法 ValueError: invalid literal for int() with base 10: '0x64'
print(int('0x64', 16)) # 100
-
Python自身对数字的敏感度较低(精确度低)
num1 = 1.1 num2 = 1 print(num1 - num2) # 0.10000000000000009 '''如果需要进行精准的计算需要借助于模块numpy.....'''
浮点型内置方法与操作
类型转换
float(其他数据类型)
和整型转换同理,可以是字符串但内部得是纯数字
print(float(123)) # 123.0
print(float('123')) # 123.0
print(type(float('123'))) # float
print(float('123a123')) # 转换不了字符串 报错
print(float('123.12')) # 可以识别一个小数点
print(float('123.123.1.2.2.2.2.2.2')) # 不能识别多个小数点哦
字符串内置方法与操作
类型转换
字符串类型能够转换的类型就多了8种类型都能转换,原理就是将所以数据值打上一个引号即可。
str(其他数据类型)
print(str(123), type(str(123)))
# 123 <class 'str'>
print(str(123.11), type(str(123.11)))
# 123.11 <class 'str'>
print(str([1, 2, 3, 4]), type(str([1, 2, 3, 4])))
# [1, 2, 3, 4] <class 'str'>
print(str({'name': '张三'}), type(str({'name': '张三'})))
# {'name': '张三'} <class 'str'>
print(str(True), type(str(True)))
# True <class 'str'>
print(str((1, 2, 3, 4)), type(str((1, 2, 3, 4))))
# (1, 2, 3, 4) <class 'str'>
print(str({1, 2, 3, 4}), type(str({1, 2, 3, 4})))
# {1, 2, 3, 4} <class 'str'>
索引取值
s1 = 'hello world'
# 索引取值起始位置从0开始,超出报错,并且支持负数
print(s1[0]) # h
print(s1[-1]) # d
print(s1[11]) # IndexError: string index out of range
切片操作
s1 = 'helloworld'
print(s1[0:3]) # hel 从索引0的位置开始切到索引2的位置 顾头不顾尾
print(s1[-1:-4]) # 错误写法 切片的顺序默认从左往右 什么都不打印
print(s1[-4:-1]) # rld 顾头不顾尾
# 修改切片方向以及间隔
print(s1[1:4:2]) # el 第三个参数不写默认为1
print(s1[-1:-4:-1]) # dlr 可以通过第三个参数的正负一 控制方向
# 其他写法
print(s1[:]) # 不写数字就默认都要
print(s1[2:]) # 从索引2开始往后都要
print(s1[:5]) # 从索引0开始往后要到4
print(s1[::2]) # 从索引0开始间隔2取值
统计字符串中字符个数
len(字符串)
s1 = 'hello world'
print(len(s1)) # 11
移除字符串首尾指定的字符
.trip
name = ' jack '
print(name.strip()) # 括号内不写默认移除首尾的空格
name = '$$jack$$'
print(name.strip('$')) # jack
# 移除开头指定字符
print(name.lstrip('$')) # jack$$
# 移除末尾指定字符
print(name.rstrip('$')) # $$jack
切割字符串中指定的字符
.split
res = 'jack|123|read'
print(res.split('|')) # ['jack', '123', 'read'] 该方法的处理结果是列表
name, pwd, hobby = res.split('|') # 解压赋值 通过split处理后是列表,可以用解压赋值方法分别赋值
# 指定切割次数
print(res.split('|', maxsplit=1)) # ['jack', '123|read']
# 从右往左切割
print(res.rsplit('|', maxsplit=1)) # ['jack|123', 'read']
字符串格式化输出
# format玩法1 等价于占位符
res = 'my name is {}, my age is {}'.format('jack', 18)
print(res) # my name is jack, my age is 18
# format玩法2 索引取值并且支持反复使用
res = 'my name is {0}, my age is {1},[1]'.format('jack', 18)
print(res) # my name is jack, my age is 18, 18
# format玩法3 占位符见名知意
res = 'my name is {name}, my age is {age},[1]'.format(name='jack',age= 18)
print(res) # my name is jack, my age is 18
# format玩法4 推荐使用 可以根据输入的不同,显示不同,不用定义固定数据
name = input('请输入您的名字:')
age = input('请输入您的年龄:')
res = f'my name is {name}, my age is {age}'
print()
转换大小写与判断
s1 = 'hElLo WorLd'
# 全部转换为大写
print(s1.upper()) # HELLO WORLD
# 全部转换为小写
print(s1.lower()) # hello world
应用场景
'''图片验证码:生成没有大小写统一的验证码 展示给用户看 获取用户输入的验证码 将用户输入的验证码和当初产生的验证码统一转大写或者小写再比对
'''
code = '9AfhD'
print('图片验证码为:', code)
w_code = input('请输入验证码:').strip()
if w_code.upper() == code.upper():
print('验证码正确')
else:
print('验证码错误')
# 判断是否纯大写
res = 'hello world'
print(res.isupper()) # False
# 判断是否纯小写
print(res.islower()) # True
判断字符串是否是纯数字
res = ''
print(res.isdigit()) # False
替换字符串中的指定内容
res = 'my name is jack jack jack'
print(res.replace('jack', 'cxk')) # my name is cxk cxk cxk 默认全部替换
print(res.replace('jack', 'cxk', 1)) # my name is cxk jack jack 从左往右替换指定个数内容
字符串的拼接
s1 = 'hello'
print('|'.join(s1)) # h|e|l|l|o
print('|'.join(['hello', 'world'])) # hello|world
'''参与拼接的数据值必须都是字符串'''
统计指定字符出现的次数
s1 = 'hello world'
print(s1.count('l')) # 3
判断字符串的开头或结尾
s1 = 'hello world'
# 判断开头是否为指定字符
print(s1.startswith('hello')) # True
print(s1.startswith('llo')) # False
# 判断结尾是否为指定字符
print(s1.endswith('world')) # True
print(s1.endswith('wor')) # False
列表内置方法及操作
类型转换
list(其他数据类型)
能够被for循环的数据类型都可以转成列表
print(list('hello')) # 字符串 ['h', 'e', 'l', 'l', 'o']
print(list({'name': 'jack', 'pwd': 123})) # 字典 ['name', 'pwd']取key转换列表
print(list((1, 2, 3, 4))) # 元祖 [1, 2, 3, 4]
print(list({1, 2, 3, 4, 5})) # 集合 [1, 2, 3, 4, 5]
索引取值
l1 = [111, 222, 333, 444, 555, 666, 777, 888]
print(l1[0]) # 111
print(l1[-1]) # 888 列表索引取值支持负数
切片操作
与字符串的切片一致
print(l1[0:5]) # 顾头不顾尾 [111, 222, 333, 444, 555]
print(l1[:]) # 取所有 [111, 222, 333, 444, 555, 666, 777, 888]
print(l1[::-1]) # 倒着取 [888, 777, 666, 555, 444, 333, 222, 111]
统计列表中数据值的个数
len()
l1 = [111, 222, 333, 444, 555, 666, 777, 888]
print(len(l1)) # 8
数据值修改
l1 = [111, 222, 333, 444, 555, 666, 777, 888]
l1[0] = 123
print(l1) # [123, 222, 333, 444, 555, 666, 777, 888]
列表添加数据值
方式一:尾部追加数据值
l1 = [111, 222, 333, 444, 555, 666, 777, 888]
l1.append('hello')
print(l1) # [111, 222, 333, 444, 555, 666, 777, 888, 'hello']
方式二:任意位置添加数据值
l1.insert(1, 'world') # 从指定索引值添加指定数据值
print(l1) # [111, 'world', 222, 333, 444, 555, 666, 777, 888, 'hello']
方式三:扩展列表 合并列表
ll1 = [11, 22, 33]
ll2 = [44, 55, 66]
ll1.extend(ll2)
print(ll1) # [11, 22, 33, 44, 55, 66]
删除列表数据
方式一:通过删除关键字del
l1 = [111, 222, 333, 444, 555, 666, 777, 888]
del l1[0]
print(l1) # [222, 333, 444, 555, 666, 777, 888]
方式二:通过remove
l1.remove(444)
print(l1) # [111, 222, 333, 555, 666, 777, 888]
方式三:通过pop
l1.pop(3) # 括号内填写索引值 不填写默认尾部弹出数据值
print(l1) # [111, 222, 333, 555, 666, 777, 888]
pop与remove的区别
res = l1.pop(3)
print(res) # 444
res1 = l1.remove(3)
print(res1) # None
'''使用pop会返回删除数据的值 remove不会返回值'''
排序
ss = [99, 44, 77, 11, 88]
ss.sort() # 默认是升序
print(ss) # [11, 44, 77, 88, 99]
ss.sort(reverse=True) # 改为降序
print(ss) # [99, 88, 77, 44, 11]
统计列表中某个数据值出现的次数
l1 = [11, 44, 55, 11, 88, 11]
print(l1.count(11)) # 3
颠倒列表顺序
l1 = [11, 44, 55, 11, 88, 11]
l1.reverse()
print(l1) # [11, 88, 11, 55, 44, 11]
可变与不可变类型
可变数据类型是当该数据类型对应变量的值发生变化时,对应内存地址并没有开辟新的内存。
'''列表,字典是可变类型'''
l1 = [11, 22, 33]
print(id(l1)) # 2360344440768
l1.append(44)
print(l1) # [11, 22, 33, 44]
print(id(l1)) # 2360344440768
不可变数据类型是当该数据类型对应变量的值发生变化时,原来内存中的值不变,而是会开辟一块新的内存,变量指向新的内存地址。
'''整型,浮点型,布尔,字符串,元祖都是不可变类型'''
res = '$$hello world$$'
print(res) # $$hello world$$
print(id(res)) # 2324132526960
res = res.strip('$')
print(res) # hello world
print(id(res)) # 2324132547952
标签:name,Python,res,s1,基础,jack,l1,print
From: https://www.cnblogs.com/lzjjjj/p/16742949.html