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
1
x = 10

2
x = int ('10')

3
x = int ('10.1')

4

5

6
# 当然第三个语句会报以下这个错误

7
#ValueError: invalid literal for int() with base 10: '10.1'

8
# 所以int括号里是不能加小数的

1.3 内置方法

整型数据是没有内置方法的,毕竟是比较基础的数据类型,只有算术运算和比较运算,也没有逻辑运算,像平时看到的and和or都没有。

1.4 存在一个还是多个值

整型仅存在一个值

1.5 有序or无序

整形数据没有顺序的概念

1.6 可变or不可变

x

1
# 可变和不可变都是针对变量值而言的

2
# 比如以下例程

3
# 可变(针对变量值而言,如果变量值改变而id内存地址不变,则称为可变的量,比如列表,字典等)

4
lis = [1,2,3]

5
print(id(lis))#2978432595720

6
lis[0]=2

7
print(id(lis))#2978432595720

8
#当然以上这个id内存地址不是固定不变的,每次生成都会改变

9

10
# 不可变(值变id号也变化,也就是说值和id内存空间是绑定的,值一旦改变内存空间也变化了)

11
x = 10

12
print(id(x))#1896115520

13
x += 1

14
print(id(x))#1896115552

所以,综上所述,整型是不可变得

2. 浮点型内置方法

2.1 作用

表示薪资等有小数部分的数据。

2.2 定义方法

x
11
8
11

1
x1 = float('1.11')

2
x2 = float('1')

3
print(type(x2))

4

5
输出结果为:

6
1.11

7
1.0

8
<class 'float'>

9
<class 'float'>

10

11

12
# 可以看到,上述定义中虽然float里面是1,但是类型还是浮点型,而不是整型

2.3 内置方法

和整型类似,仅有算术运算和比较运算。

2.4 存在一个还是多个值

仅存在一个值

2.5 有序or无序

没有此类概念

2.6 可变or不可变

不可变的数据类型

二. 字符串类型内置方法

1. 作用

描述姓名,性别,各种词语等等。

2. 定义方法

xxxxxxxxxx
1

1
s = b'ab'#此处留意,b开头在字符串前,打印出来会是bytes类型,也就是二进制类型,不是十进制

2
print(s)

3
print(type(s))

4

5
#其输出结果为:

6
b'ab'

7
<class 'bytes'>

8

  • 字符串常用的几个特殊字符

    x
    129
    27

    1
    #\n 换行

    2
    s = 'a\na'

    3
    print(s)

    4

    5
    a

    6
    a

    7

    8

    9
    #\t 缩进,通常为四个空格

    10
    s = 'a\ta'

    11
    print(s)

    12

    13
    aa

    14

    15

    16
    #\r 原位打印,即覆盖掉上一个打印结果

    17
    s = 'a\ra'

    18
    print(s)

    19

    20
    a

    21

    22
    #r'' 在字符串前面加r,可以使后面字符串内所有的\加字符的特殊字符都无效,比如

    23
    s = r'\na\ra'

    24
    print(s)

    25

    26
    \na\ra

    27

    以上几个特殊字符可能会在平时用到,可以多了解一下

3. 内置方法

字符串的内置方法是重点,熟练掌握之后可以融会贯通列表和字典的内置方法,有许多相似。

x

1
s = 'dog is cut'

2
# 索引号自左至右,从0开始

3
# 最常用的内置方法

4
#1. 索引取值

5
print(s[1])

6
o

7

8
# 2. 切片

9
print(s[0:4:1])#1表示从左向右切片

10
`dog `

11
print(s[4::-1])# -1表示从右向左,不推荐用

12

13
# 3.for循环

14
for i in s:

15
print(i)

16

17
# 4.striip()# 去两端指定字符,不能去中间的

18
s1 = '      nick handsome'

19
print(s1.strip())

20
print(s1.strip(' niem'))

21
s2 = '**!!nick handsome'

22
print(s2.strip('-*!e'))# 首先判断字符串s2的两端字符,为*,然后去strip里面找有没有*,有就去掉,再去判断字符串s2里的-!,以此类推

23

24
#制定多个字符一起去掉,只要strip里面有的字符就全部干掉

25

26
#5. split()切割,断开

27
print(s2.split())#默认以空格切割字符串

28
print(s2.split('!'))#以制定字符切割

29
print(s2.split('!',1))#切割一次,数字就是次数

30

31
#6. in 或not in

32
print('*'in s2)

33

34
#7. 长度len

35
print(len(s2)) #求字符串的长度

36
lis = ['sfd','sdf','sdfsf','sfdf']

37
dict = {'a':1,'b':55,'c':464}

38
print(len(s1))

39
print(len(dict))

40
print(len(lis))

41

42
# 稍微没那么常用的内置方法

43
# 1. lstrip() 左切割

44
# 2. rstrip()右切割,用法等同于strip

45

46
#

47
# 3. lower&upper全部大写,全部小写

48
s3 = 'aaabbJ'

49
print(s3.lower())

50
print(s3.upper())

51
# 4. startswith&endswith

52
# 判断字符串开头和结尾是不是某字符,返回值是True或者False

53

54
# 5. rsplit右切割

55

56
# 6. join# 用的较多的,增加字符串

57
print(s3.join(['353','345','53453','3534']))# 以s3位间隔符,拼接列表里每一个元素

58
s = '辣条/薯片/汽水/当归'

59
s1 = s.split('/'))

60
' '.join(s1)

61
print(s)# join和split通常组合使用

62
# 7. replace#顾名思义,替换

63
s2 = 'nick handsome'

64
print(f"{s2.replace('handsome','shuai')}")

65

66
# 8. isdigit判断是否为纯数字,salpha()判断是否为纯字符

67
s2 = 'aaccc'

68
print(s2.isdigit())

69
print(s2.isalpha())

70

71
# 比如如果要实现账号密码的登录验证:

72
username_db = 'nick'

73
pwd_db = '123'

74
inp_username = input('username:')

75
inp_pwd = input('pwd:')

76

77

78

79
# 不太常用的一些内置方法

80

81
# find|rfind|index|rindex|count

82
s2 = '****nick % handsome% ****'

83
print(s2.find('%'))

84
print(s2.rfind('%')) # 从左找和从右找,找到即停止,只限第一个

85
print(s2.index('%'))

86
print(s2.rindex('%'))#index找不到会报错,但是find找不到会返回值-1,所以日后编程多用find,而不是index

87

88
# center|ljust|rjust|z

89
s2 = 'nick handsome'

90
print(s2.center(50,'*'))# 填充到50字符,居中

91
print(s2.ljust(50,'*'))#居左

92
print(s2.rjust(50,'*'))#居右

93

94
# fill

95
print(s2.zfill(50))#填充0居右

96

97
# expandtabs

98
s2 = 'a\ta'# \t是缩进四个字符

99
print(s2)

100
print(s2.expandtabs(32))# 针对\t扩充tab

101

102
# captalize|swapcase|title

103
s2 = 'harry Potter'

104

105
print(s2.capitalize())#首字母大写,用在段落开始

106
print(s2.swapcase())#大小写互换

107
print(s2.title())#所有单词首字母大写,仅针对英文,对中文无效

108

4. 存在一个还是多个值

仅有一个值

5. 有序or无序

字符串有索引号,所以有序

6. 可变or不可变

字符串是不可变的数据类型

Tips:

  1. 字符串,列表,字典的内置方法是以后实现很多功能非常简便的方法,要多用,才能熟练。

  2. 最近做的一个非常有意思的leetcode的题目,贴在这里,供大家参考一下,就能看出来用内置方法和暴力破解差距有多大。

    x

    1
    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。

    2

    3
    字符          数值

    4
    I             1

    5
    V             5

    6
    X             10

    7
    L             50

    8
    C             100

    9
    D             500

    10
    M             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

    15
    I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。

    16
    X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。 

    17
    C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。

    18
    给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。

    19

    20
    来源:力扣(LeetCode)

    21
    链接:<https://leetcode-cn.com/problems/roman-to-integer>

    以上是题目,下面是我自己做出的两种解题方法。

    第一种:暴力破解法,非常暴力

xxxxxxxxxx
1
54

1
class Solution:

2
    def romanToInt(self, s: str) -> int:

3
        s1 = list(s)

4
        d = 0

5
        size = len(s)

6
        s1.append('0')

7
        count = 0

8
        for i in range(size):

9
            if count == i+1 :

10
                continue

11
            if s1[i] == 'I':

12
                if s1[i+1] == 'X':

13
                    d += 9

14
                    count += 2

15
                elif s1[i+1] == 'V':

16
                    d += 4

17
                    count += 2

18
                else:

19
                    d += 1

20
                    count += 1

21
            if s1[i] == 'X':

22
                if s1[i+1] == 'C':

23
                    d += 90

24
                    count += 2

25
                elif s1[i+1] == 'L':

26
                    d += 40

27
                    count += 2

28
                else:

29
                    d += 10

30
                    count += 1

31
            if s1[i] == 'C':

32
                if s1[i+1] == 'M':

33
                    d += 900

34
                    count += 2

35
                elif s1[i+1] == 'D':

36
                    d += 400

37
                    count += 2

38
                else:

39
                    d += 100

40
                    count += 1

41
            if s1[i] == 'V':

42
                d += 5

43
                count += 1

44
            if s1[i] == 'L':

45
                d += 50

46
                count += 1

47
            if s1[i] == 'D':

48
                d += 500

49
                count += 1

50
            if s1[i] == 'M':

51
                d += 1000

52
                count += 1

53
        return(d)

54
        

第二种,用字典,和各种内置方法:

xxxxxxxxxx
1
18

1
class Solution:

2
    def romanToInt(self, s: str) -> int:

3
                    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}

4
                    s1 = list(s)

5
                    d = 0

6
                    size = len(s)

7
                    count = 0

8
                    s1.append('0')

9
                    for i in range(size):

10
                        if count == i + 1:

11
                             continue

12
                        if my_dict[s1[i]] < my_dict[s1[i+1]]:

13
                            d += my_dict[f'{s1[i]}{s1[i+1]}']

14
                            count+=2

15
                        else:

16
                            d += my_dict[s1[i]]

17
                            count+=1

18
                    return(d)

以上明显可以看出,执行用时基本缩短了一半,可见效率很高。

转载于:https://www.cnblogs.com/Xu-PR/p/11289683.html

Python学习day07 - Python进阶(1) 内置方法相关推荐

  1. python学习之最常用的内置函数

    python学习之最常用的内置函数 Python 内置函数总共有70余个(通常把内置类也统称为内置函数),覆盖面广,功能强大.不过,对于初学者在初级阶段,掌握下面几个函数是当务之急. (1) 控制台输 ...

  2. Python之路(第二十七篇) 面向对象进阶:内置方法、描述符

    一.__call__ 对象后面加括号,触发执行类下面的__call__方法. 创建对象时,对象 = 类名() :而对于 __call__ 方法的执行是由对象后加括号触发的,即:对象() 或者 类()( ...

  3. python 内置模块 增加_模块的内置方法--Python提高班

    这期的话题有点简单, 整理下常见的模块内置方法 刚开始学Python的时候, 看到if __name__ == '__main__': main()就不明觉厉了, 一直好奇__name__这货到底是个 ...

  4. python_day21面向对象的进阶(反射,内置方法,)

    # 两个内置函数 *# 反射 *****# 内置方法 *** # 类(定义) # 静态属性 类属性(变量) 直接写在类中,全大写 # 动态属性 方法(函数) self # 类方法 @classmeth ...

  5. python常用内置函数总结-Python学习教程之常用的内置函数大全

    前言 内置函数,一般都是因为使用比较频繁或是元操作,所以通过内置函数的形式提供出来.在Python中,python给我们提供了很多已经定义好的函数,这里列出常用的内置函数,分享出来供大家参考学习,下面 ...

  6. Python学习8 函数 匿名函数 内置函数

    转换相关的方法-eval 转换相关的方法-json 函数基本语法大纲 函数概念 示例: 题目: 函数的参数 def f(x,y=1,*z,**abc):print(x,y,z,abc,sep=&quo ...

  7. 3.1 Python 字符串类型常用操作及内置方法

    文章目录 1. Str 字符串 1.1 字符串 1.2 反斜杠 1. 字符串跨行书写 2. 转义字符 1.3 打印引号 1. 错误示例 2. 解决方法 1.4 三引号 1.5 原始字符串 1. 正确示 ...

  8. MongoDB学习day08--Mongoose索引、Mongoose内置方法、扩展Mongoose Model的静态方法和实例方法...

    一.Mongoose索引 索引是对数据库表中一列或多列的值进行排序的一种结构, 可以让我们查询数据库变得更快. MongoDB 的索引几乎与传统的关系型数据库一模一样, 这其中也包括一些基本的查询优化 ...

  9. python oop求三角形面积公式_python学习日记(OOP——类的内置方法)

    __str__和__repr__ 改变对象的字符串显示__str__,__repr__ 我们先定义一个Student类,打印一个实例: classStudent(object):def __init_ ...

最新文章

  1. python dlib 的安装
  2. 5 个越早知道越好的 Python 特性
  3. UWP开发入门(十六)——常见的内存泄漏的原因
  4. youtube-dl
  5. python 贴吧自动回复机-用python itchat写一个微信机器人自动回复
  6. 面试题整理 2:求链表倒数第 k 个结点
  7. qq分享提示设备未授权_QQ帐号已经可以注销了,过去几天,第一批尝试的人已经放弃了!...
  8. 【转载】css3 content 生成内容
  9. 全国计算机等级考试题库二级C操作题100套(第51套)
  10. [Swift]LeetCode862. 和至少为 K 的最短子数组 | Shortest Subarray with Sum at Least K
  11. IP协议和IPX协议的区别
  12. NEWSCTF第一届--官方wp(2021新春赛)
  13. 用户空间和内核空间的区别
  14. python counter函数_Python中的魔法函数——Counter
  15. Android手机cpu架构详解
  16. 浅析SCI论文发表和转让
  17. 计算机巨人的采访对话英文怎么说,【英文采访稿对话式范文】_英文采访稿对话式范文...
  18. 龙之气息服务器维护,【龙之气息:从入坑到肝硬化】
  19. VTK笔记——插值样条曲线采样
  20. 实现Ubuntu与Nvida Nano远程连接

热门文章

  1. java实用类_Java—实用类
  2. js正则匹配闭合标签_正则表达式匹配封闭html标签
  3. oracle插入CLOB类型超过4000个字符报ORA-01704错的解决方法及其它相关场景解决方案...
  4. ArcGIS中Shapefile和Geodatabase坐标容差的问题
  5. dijkstra 最短路算法
  6. Redis命令小细节
  7. c++ lamda表达式调用自身实现定时器
  8. UCall能真正的免费打电话,爽
  9. c语言存储类型重要吗,C语言储存类别(Storage Class)
  10. 仿形靠模的计算机设计方法,仿形靠模的计算机设计方法.pdf