Python学习day07 - Python进阶(1) 内置方法
Python学习day07-Python进阶(1)数据类型的内置方法一. 数字类型内置方法1. 整型内置方法1.1 作用1.2 定义方法1.3 内置方法1.4 存在一个还是多个值1.5 有序or无序1.6 可变or不可变2. 浮点型内置方法2.1 作用2.2 定义方法2.3 内置方法2.4 存在一个还是多个值2.5 有序or无序2.6 可变or不可变二. 字符串类型内置方法1. 作用2. 定义方法3. 内置方法4. 存在一个还是多个值5. 有序or无序6. 可变or不可变Tips:
Python学习day07-Python进阶(1)数据类型的内置方法
一. 数字类型内置方法
1. 整型内置方法
1.1 作用
描述我们的年龄,id号等等,日常生活中可以用整数来表示的事物。
1.2 定义方法
x = 10
x = int ('10')
x = int ('10.1')
# 当然第三个语句会报以下这个错误
#ValueError: invalid literal for int() with base 10: '10.1'
# 所以int括号里是不能加小数的
1.3 内置方法
整型数据是没有内置方法的,毕竟是比较基础的数据类型,只有算术运算和比较运算,也没有逻辑运算,像平时看到的and和or都没有。
1.4 存在一个还是多个值
整型仅存在一个值
1.5 有序or无序
整形数据没有顺序的概念
1.6 可变or不可变
x
# 可变和不可变都是针对变量值而言的
# 比如以下例程
# 可变(针对变量值而言,如果变量值改变而id内存地址不变,则称为可变的量,比如列表,字典等)
lis = [1,2,3]
print(id(lis))#2978432595720
lis[0]=2
print(id(lis))#2978432595720
#当然以上这个id内存地址不是固定不变的,每次生成都会改变
# 不可变(值变id号也变化,也就是说值和id内存空间是绑定的,值一旦改变内存空间也变化了)
x = 10
print(id(x))#1896115520
x += 1
print(id(x))#1896115552
所以,综上所述,整型是不可变得
2. 浮点型内置方法
2.1 作用
表示薪资等有小数部分的数据。
2.2 定义方法
x
x1 = float('1.11')
x2 = float('1')
print(type(x2))
输出结果为:
1.11
1.0
<class 'float'>
<class 'float'>
# 可以看到,上述定义中虽然float里面是1,但是类型还是浮点型,而不是整型
2.3 内置方法
和整型类似,仅有算术运算和比较运算。
2.4 存在一个还是多个值
仅存在一个值
2.5 有序or无序
没有此类概念
2.6 可变or不可变
不可变的数据类型
二. 字符串类型内置方法
1. 作用
描述姓名,性别,各种词语等等。
2. 定义方法
xxxxxxxxxx
s = b'ab'#此处留意,b开头在字符串前,打印出来会是bytes类型,也就是二进制类型,不是十进制
print(s)
print(type(s))
#其输出结果为:
b'ab'
<class 'bytes'>
字符串常用的几个特殊字符
x
129271#\n 换行
2s = 'a\na'
3print(s)
4
5a
6a
7
8
9#\t 缩进,通常为四个空格
10s = 'a\ta'
11print(s)
12
13aa
14
15
16#\r 原位打印,即覆盖掉上一个打印结果
17s = 'a\ra'
18print(s)
19
20a
21
22#r'' 在字符串前面加r,可以使后面字符串内所有的\加字符的特殊字符都无效,比如
23s = r'\na\ra'
24print(s)
25
26\na\ra
27
以上几个特殊字符可能会在平时用到,可以多了解一下
3. 内置方法
字符串的内置方法是重点,熟练掌握之后可以融会贯通列表和字典的内置方法,有许多相似。
x
s = 'dog is cut'
# 索引号自左至右,从0开始
# 最常用的内置方法
#1. 索引取值
print(s[1])
o
# 2. 切片
print(s[0:4:1])#1表示从左向右切片
`dog `
print(s[4::-1])# -1表示从右向左,不推荐用
# 3.for循环
for i in s:
print(i)
# 4.striip()# 去两端指定字符,不能去中间的
s1 = ' nick handsome'
print(s1.strip())
print(s1.strip(' niem'))
s2 = '**!!nick handsome'
print(s2.strip('-*!e'))# 首先判断字符串s2的两端字符,为*,然后去strip里面找有没有*,有就去掉,再去判断字符串s2里的-!,以此类推
#制定多个字符一起去掉,只要strip里面有的字符就全部干掉
#5. split()切割,断开
print(s2.split())#默认以空格切割字符串
print(s2.split('!'))#以制定字符切割
print(s2.split('!',1))#切割一次,数字就是次数
#6. in 或not in
print('*'in s2)
#7. 长度len
print(len(s2)) #求字符串的长度
lis = ['sfd','sdf','sdfsf','sfdf']
dict = {'a':1,'b':55,'c':464}
print(len(s1))
print(len(dict))
print(len(lis))
# 稍微没那么常用的内置方法
# 1. lstrip() 左切割
# 2. rstrip()右切割,用法等同于strip
#
# 3. lower&upper全部大写,全部小写
s3 = 'aaabbJ'
print(s3.lower())
print(s3.upper())
# 4. startswith&endswith
# 判断字符串开头和结尾是不是某字符,返回值是True或者False
# 5. rsplit右切割
# 6. join# 用的较多的,增加字符串
print(s3.join(['353','345','53453','3534']))# 以s3位间隔符,拼接列表里每一个元素
s = '辣条/薯片/汽水/当归'
s1 = s.split('/'))
' '.join(s1)
print(s)# join和split通常组合使用
# 7. replace#顾名思义,替换
s2 = 'nick handsome'
print(f"{s2.replace('handsome','shuai')}")
# 8. isdigit判断是否为纯数字,salpha()判断是否为纯字符
s2 = 'aaccc'
print(s2.isdigit())
print(s2.isalpha())
# 比如如果要实现账号密码的登录验证:
username_db = 'nick'
pwd_db = '123'
inp_username = input('username:')
inp_pwd = input('pwd:')
# 不太常用的一些内置方法
# find|rfind|index|rindex|count
s2 = '****nick % handsome% ****'
print(s2.find('%'))
print(s2.rfind('%')) # 从左找和从右找,找到即停止,只限第一个
print(s2.index('%'))
print(s2.rindex('%'))#index找不到会报错,但是find找不到会返回值-1,所以日后编程多用find,而不是index
# center|ljust|rjust|z
s2 = 'nick handsome'
print(s2.center(50,'*'))# 填充到50字符,居中
print(s2.ljust(50,'*'))#居左
print(s2.rjust(50,'*'))#居右
# fill
print(s2.zfill(50))#填充0居右
# expandtabs
s2 = 'a\ta'# \t是缩进四个字符
print(s2)
print(s2.expandtabs(32))# 针对\t扩充tab
# captalize|swapcase|title
s2 = 'harry Potter'
print(s2.capitalize())#首字母大写,用在段落开始
print(s2.swapcase())#大小写互换
print(s2.title())#所有单词首字母大写,仅针对英文,对中文无效
4. 存在一个还是多个值
仅有一个值
5. 有序or无序
字符串有索引号,所以有序
6. 可变or不可变
字符串是不可变的数据类型
Tips:
字符串,列表,字典的内置方法是以后实现很多功能非常简便的方法,要多用,才能熟练。
最近做的一个非常有意思的leetcode的题目,贴在这里,供大家参考一下,就能看出来用内置方法和暴力破解差距有多大。
x
1罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。
2
3字符 数值
4I 1
5V 5
6X 10
7L 50
8C 100
9D 500
10M 1000
11例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。
12
13通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:
14
15I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
16X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。
17C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
18给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。
19
20来源:力扣(LeetCode)
21链接:<https://leetcode-cn.com/problems/roman-to-integer>
以上是题目,下面是我自己做出的两种解题方法。
第一种:暴力破解法,非常暴力
xxxxxxxxxx
class Solution:
def romanToInt(self, s: str) -> int:
s1 = list(s)
d = 0
size = len(s)
s1.append('0')
count = 0
for i in range(size):
if count == i+1 :
continue
if s1[i] == 'I':
if s1[i+1] == 'X':
d += 9
count += 2
elif s1[i+1] == 'V':
d += 4
count += 2
else:
d += 1
count += 1
if s1[i] == 'X':
if s1[i+1] == 'C':
d += 90
count += 2
elif s1[i+1] == 'L':
d += 40
count += 2
else:
d += 10
count += 1
if s1[i] == 'C':
if s1[i+1] == 'M':
d += 900
count += 2
elif s1[i+1] == 'D':
d += 400
count += 2
else:
d += 100
count += 1
if s1[i] == 'V':
d += 5
count += 1
if s1[i] == 'L':
d += 50
count += 1
if s1[i] == 'D':
d += 500
count += 1
if s1[i] == 'M':
d += 1000
count += 1
return(d)
第二种,用字典,和各种内置方法:
xxxxxxxxxx
class Solution:
def romanToInt(self, s: str) -> int:
my_dict = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000,'IV':4,'IX':9,'XL':40,'XC':90,'CD':400,'CM':900,'0':0}
s1 = list(s)
d = 0
size = len(s)
count = 0
s1.append('0')
for i in range(size):
if count == i + 1:
continue
if my_dict[s1[i]] < my_dict[s1[i+1]]:
d += my_dict[f'{s1[i]}{s1[i+1]}']
count+=2
else:
d += my_dict[s1[i]]
count+=1
return(d)
以上明显可以看出,执行用时基本缩短了一半,可见效率很高。
转载于:https://www.cnblogs.com/Xu-PR/p/11289683.html
Python学习day07 - Python进阶(1) 内置方法相关推荐
- python学习之最常用的内置函数
python学习之最常用的内置函数 Python 内置函数总共有70余个(通常把内置类也统称为内置函数),覆盖面广,功能强大.不过,对于初学者在初级阶段,掌握下面几个函数是当务之急. (1) 控制台输 ...
- Python之路(第二十七篇) 面向对象进阶:内置方法、描述符
一.__call__ 对象后面加括号,触发执行类下面的__call__方法. 创建对象时,对象 = 类名() :而对于 __call__ 方法的执行是由对象后加括号触发的,即:对象() 或者 类()( ...
- python 内置模块 增加_模块的内置方法--Python提高班
这期的话题有点简单, 整理下常见的模块内置方法 刚开始学Python的时候, 看到if __name__ == '__main__': main()就不明觉厉了, 一直好奇__name__这货到底是个 ...
- python_day21面向对象的进阶(反射,内置方法,)
# 两个内置函数 *# 反射 *****# 内置方法 *** # 类(定义) # 静态属性 类属性(变量) 直接写在类中,全大写 # 动态属性 方法(函数) self # 类方法 @classmeth ...
- python常用内置函数总结-Python学习教程之常用的内置函数大全
前言 内置函数,一般都是因为使用比较频繁或是元操作,所以通过内置函数的形式提供出来.在Python中,python给我们提供了很多已经定义好的函数,这里列出常用的内置函数,分享出来供大家参考学习,下面 ...
- Python学习8 函数 匿名函数 内置函数
转换相关的方法-eval 转换相关的方法-json 函数基本语法大纲 函数概念 示例: 题目: 函数的参数 def f(x,y=1,*z,**abc):print(x,y,z,abc,sep=&quo ...
- 3.1 Python 字符串类型常用操作及内置方法
文章目录 1. Str 字符串 1.1 字符串 1.2 反斜杠 1. 字符串跨行书写 2. 转义字符 1.3 打印引号 1. 错误示例 2. 解决方法 1.4 三引号 1.5 原始字符串 1. 正确示 ...
- MongoDB学习day08--Mongoose索引、Mongoose内置方法、扩展Mongoose Model的静态方法和实例方法...
一.Mongoose索引 索引是对数据库表中一列或多列的值进行排序的一种结构, 可以让我们查询数据库变得更快. MongoDB 的索引几乎与传统的关系型数据库一模一样, 这其中也包括一些基本的查询优化 ...
- python oop求三角形面积公式_python学习日记(OOP——类的内置方法)
__str__和__repr__ 改变对象的字符串显示__str__,__repr__ 我们先定义一个Student类,打印一个实例: classStudent(object):def __init_ ...
最新文章
- python dlib 的安装
- 5 个越早知道越好的 Python 特性
- UWP开发入门(十六)——常见的内存泄漏的原因
- youtube-dl
- python 贴吧自动回复机-用python itchat写一个微信机器人自动回复
- 面试题整理 2:求链表倒数第 k 个结点
- qq分享提示设备未授权_QQ帐号已经可以注销了,过去几天,第一批尝试的人已经放弃了!...
- 【转载】css3 content 生成内容
- 全国计算机等级考试题库二级C操作题100套(第51套)
- [Swift]LeetCode862. 和至少为 K 的最短子数组 | Shortest Subarray with Sum at Least K
- IP协议和IPX协议的区别
- NEWSCTF第一届--官方wp(2021新春赛)
- 用户空间和内核空间的区别
- python counter函数_Python中的魔法函数——Counter
- Android手机cpu架构详解
- 浅析SCI论文发表和转让
- 计算机巨人的采访对话英文怎么说,【英文采访稿对话式范文】_英文采访稿对话式范文...
- 龙之气息服务器维护,【龙之气息:从入坑到肝硬化】
- VTK笔记——插值样条曲线采样
- 实现Ubuntu与Nvida Nano远程连接
热门文章
- java实用类_Java—实用类
- js正则匹配闭合标签_正则表达式匹配封闭html标签
- oracle插入CLOB类型超过4000个字符报ORA-01704错的解决方法及其它相关场景解决方案...
- ArcGIS中Shapefile和Geodatabase坐标容差的问题
- dijkstra 最短路算法
- Redis命令小细节
- c++ lamda表达式调用自身实现定时器
- UCall能真正的免费打电话,爽
- c语言存储类型重要吗,C语言储存类别(Storage Class)
- 仿形靠模的计算机设计方法,仿形靠模的计算机设计方法.pdf