数据类型的基本使用及内置方法

数据类型:int、float、str、list 的基本使用及内置方法,可变不可变类型 - 图1

整型int 的基本使用

  • 作用:用来记录年龄、人数、号码、等整数相关的状态

    1. age = 18 # 本质age = int(18)
    2. print(type(age)) # <class 'int'>

常用操作

  • 数学运算 + 比较运算 ```python

    1.类型转换:只能把纯数字组成的字符串转成整型,代码中展示出来的效果就是 名字()

    res = int(“18”)

    print(res) # 18

LONG类型 在python2中(python3中没有长整形的概念)

2.进制转换:

print(bin(11)) # bin十进制转二进制 0b1011

print(oct(11)) # oct十进制转八进制 0o13

print(hex(11)) # hex十进制转十六进制 0xb

0b开头为二进制数 0o开头为八进制数 0x开头为十六进制数

print(int(‘0b1011’, 2)) # 11

print(int(‘0o13’, 8)) # 11

print(int(‘0xb’, 16)) # 11

x = 1 - 2j

print(type(x)) # complex复数

print(x.real) # 1.0 实步

print(x.imag) # -2.0 虚步

  1. - 该类型总结:
  2. - 只能存一个值
  3. - 不可变类型
  4. ---
  5. <a name="4e1a460e"></a>
  6. ## 浮点型float的基本使用
  7. - **作用:**用来记录身高、体重、薪资等小数相关的状态
  8. ```python
  9. salary = 3.1 # 本质 salary = float(3.1)
  10. print(type(salary)) # <class 'float'>

常用操作

  • 数学运算 + 比较运算

    1. # float数据类型转换: 可以把小数组成的字符串转成浮点型
    2. res=float(111)
    3. print(res,type(res)) # 111.0 <class 'float'>
    4. res=float(" 3.3 ")
    5. print(res,type(res)) # 3.3 <class 'float'>
  • 该类型总结:

    • 只能存一个值
    • 不可变类型

字符串str的基本使用

  • 作用:用来记录姓名、性别、国籍、家庭地址等描述性质的状态
  • 定义方式:在””,’’,””””””,’’’’’’内包含一串字符
  1. msg = "abc" # 本质 msg = str("abc")
  2. print(type(msg)) # <class 'str'>
  • 注意
    • 1、上述引号定义出来的都是 str 类型,没有区别
    • 2、三引号可以存放多行字符串
    • 3、引号的嵌套:外层双引号,内层只能用单引号
  1. # 数据类型转换:str可以把任意类型都转成字符串类型
  2. res = str([1,2,3]) # 列表转字符串类型
  3. print(res,type(res)) # [1, 2, 3] <class 'str'>

<<< 补充知识点>>>

  1. # 右斜杠的概念: \n
  2. print("abc\nddd")
  3. print(r"abc\nddd") # √
  4. print("abc\\nddd") # √
  5. print('abc\nddd')
  6. file_path=r'D:\new\a.py' # 加r前缀
  7. file_path='D:\\new\\a.py' # 双斜杠转意
  8. print(file_path) # D:\new\a.py

str 常用操作

优先掌握的操作

1、索引取值(正向取+反向取):只能取

  1. msg = "hello world"
  2. print(msg[0],type(msg[0])) # h <class 'str'>
  3. print(msg[-1]) # d
  4. msg[0]="H" # 报错!只能取不能改

2、切片 (顾头不顾尾,步长)

  1. msg = "hello world"
  2. res = msg[1:7] # 索引从1开始取到7结束,空格也算字符
  3. print(res) # ello w
  4. res = msg[1:7:2] # 1 3 5
  5. print(res) # el
  6. res = msg[:] # 复制字符串,原始写法 msg[::1]
  7. print(res) # hello world
  8. res = msg[::-1] # 倒着取,原始写法 msg[10::-1]
  9. print(res) # dlrow olleh

3、统计字符串内部字符的个数 len

  1. msg = "hello world"
  2. print(len(msg)) # 11

4、成员运算in和not in

  1. msg = "hello world"
  2. print("he" in msg) # True
  3. print("he" not in msg) # False 推荐使用
  4. print(not "he" in msg) # False

5、移除空白 strip

  1. msg = " hello "
  2. res = msg.strip()
  3. print(res)
  4. print(msg)
  5. # strip移除*号
  6. msg = "********hello**********"
  7. print(msg)
  8. print(msg.strip("*"))
  9. # strip移除符号
  10. msg = "+*-he*llo***%/*"
  11. print(msg.strip("*+-/%"))
  12. # strip应用用户登录验证案例:
  13. inp_name = input("username: ").strip() # inp_name = "jack "
  14. inp_pwd = input("password: ").strip()
  15. if inp_name == "jack" and inp_pwd == "123":
  16. print('ok')
  17. else:
  18. print('no')

6、切分split,rsplit 把一个字符串按照某一个分隔符切割成列表,split 指定切几刀从左往右切,rsplit 指定切几刀从右往左切

  1. msg = "jack:123:3000"
  2. print(msg[0:4]) # jack
  3. # split()指定切几刀从左往右切,该方法的结果是一个列表
  4. res = msg.split(":")
  5. print(res) # ['jack', '123', '3000']
  6. res = msg.split(":", 1) # 指定切分次数
  7. print(res) # ['jack', '123:3000']
  8. # rsplit()指定切几刀从右往左切,该方法的结果是一个列表
  9. res = msg.rsplit(":",1)
  10. print(res) # ['jack:123', '3000']

7、循环

  1. name = 'jack'
  2. for x in name: # 依次取出字符串中每一个字符
  3. print(x)
  4. '''
  5. j
  6. a
  7. c
  8. k
  9. '''

str 内置方法

需要掌握的操作

1、strip(去除左右两边)lstrip(去除左边)rstrip(去除右边)

  1. msg = "****hello****"
  2. print(msg.strip("*")) # hello
  3. print(msg.lstrip("*")) # hello****
  4. print(msg.rstrip("*")) # ****hello

2、lower(全部转小写)、 upper(全部转大写)

  1. res = 'JasOn123 JAson'
  2. # 转全小写
  3. print(res.lower()) # jason123 jason
  4. # 转全大写
  5. print(res.upper()) # JASON123 JASON
  6. """
  7. 实际案例:图片验证码忽略大小写
  8. 思路:全部转大写或者小写再比对
  9. """
  10. old_code = 'JaSon123'
  11. print('这是返回给用户的图片验证码:%s' % old_code)
  12. new_code = input('请输入验证码>>>:').strip()
  13. if old_code.upper() == new_code.upper(): # 这里也可以使用lower()
  14. print('验证码正确')
  15. else:
  16. print('验证码错误')
  17. # 示例
  18. res = 'JASON123'
  19. res1 = 'jason123'
  20. # 判断是否是纯大写
  21. print(res.isupper()) # True
  22. print(res1.isupper()) # False
  23. # 判断是否是纯小写
  24. print(res.islower()) # False
  25. print(res1.islower()) # True

3、startswith(判断开头), endswith(判断结尾)

  1. msg = "jack is ok"
  2. print(msg.startswith("jack")) # True
  3. print(msg.startswith("ja")) # True
  4. print(msg.startswith('tony')) # False
  5. print(msg.endswith("ok")) # True
  6. print(msg.endswith("k")) # True
  7. print(msg.endswith('is')) # False

4、format的三种玩法

  1. # 与用户交互 占位符 %s %d
  2. msg = "my name is %s my age is %s" %("jack",18)
  3. # 字符串内置方法 format()
  4. # 第一种玩法 相当于%s占位符
  5. msg = 'my name is {} my age is {}'
  6. print(msg.format('jack',18)) # my name is jack my age is 18
  7. # 第二种玩法 大括号内写索引值可以打破顺序 并且可以反复使用相同位置的数据
  8. msg = '{1} my name is {1} my age is {0} {0} {0} {1} {1}'
  9. print(msg.format('jack', 18))
  10. # 第三种玩法 大括号内写变量名
  11. msg = "my name is {name} my age is {age}".format(age=18,name="jack")
  12. print(msg) # my name is jack my age is 18
  13. '''
  14. 占位符与format结合具体情况挑选使用
  15. 字符串格式化推荐用format,相比%s效率更高
  16. '''
  17. # 补充(传字典需要加特殊符号**)
  18. msg = "my name is {name} my age is {age}".format(**{"age":18,"name":"jack"})
  19. msg = "my name is %(name)s my age is %(age)s" % {"age":18,"name":"jack"}
  20. print(msg) # my name is jack my age is 18
  21. name = "jack"
  22. age = 18
  23. print(f"my name is {name} my age is {age}") # my name is jack my age is 18

5、join(把列表用某一个连接符重新再拼接成字符串)

  1. l = ["jack","18","3000","44444"]
  2. # 方式一:利用索引手动拼接
  3. print(l[0]+":"+l[1]+":"+l[2]+":"+l[3]) # jack:18:3000:44444
  4. # 方式二:用join进行拼接
  5. print(":".join(l)) # jack:18:3000:44444

6、replace(新值替换旧值)

  1. msg = 'jack xxxx jack yyy jack'
  2. res = msg.replace('jack',"JACK",1) # 写几次换几次 -1全换
  3. print(res) # JACK xxxx jack yyy jack
  4. res = msg.replace('jack',"JACK") # 不写次数,默认全换
  5. print(res) # JACK xxxx JACK yyy JACK
  6. msg = "**_+_***he llo***+-**"
  7. res = msg.strip("*_+-").replace(" ",'')
  8. print(res) # hello

8、isdigit(判断字符串是否为纯数字)

  1. msg = 'jason123'
  2. print(msg.isdigit()) # False
  3. num = '123'
  4. print(num.isdigit()) # True
  5. # 示例
  6. num = input("请输入>>>: ") # num = "asfasdf"
  7. if num.isdigit():
  8. num = int(num)
  9. print(num > 10)
  10. else:
  11. print("必须输入数字,小垃圾")

了解即可

1、find,rfind,index,rindex,count

  1. msg = 'hello el abc'
  2. # find():查看指定字符对应的起始索引值,从左往右进行查找,找得到则返回数字1,找不到则返回-1
  3. res=msg.find("el")
  4. print(res) # 1
  5. # rfind():从右往左进行查找,返回真实的索引位置,找不到返回-1
  6. res=msg.rfind("el")
  7. print(res) # 6
  8. # index():查找索引值,找不到的话会报错。
  9. res=msg.index("el")
  10. print(res) # 1
  11. # rindex():从右边进行查找,返回真实的索引位置,找不到抛出异常
  12. res=msg.rindex("el")
  13. print(res) # 6
  14. res=msg.find("xxx")
  15. print(res) # -1
  16. res=msg.index("xxx") # 找不到则报错
  17. # count():统计某个字符出现的次数(记忆)
  18. res = msg.count('el')
  19. print(res) # 2

2、center,ljust,rjust,zfill

  1. # center():用指定的字符来填充字符串,使得字符串居中
  2. print('hello'.center(15,'*')) # *****hello*****
  3. # ljust():和center是类似的,仅仅是在左边
  4. print('hello'.ljust(15,'*')) # hello**********
  5. # rjust():和center是类似的,仅仅是在右边
  6. print('hello'.rjust(15,'*')) # **********hello
  7. # zfill():在开头添加指定的长度的0,类似于:'hello'.rjust(50,'0')
  8. print('hello'.zfill(15)) # **********hello

3、captalize,swapcase,title

  1. # capitalize():将字符串首字母大写
  2. print("hello world".capitalize()) # Hello world
  3. # swapcase():大写变成小写,小写变成大写
  4. print("aAbB".swapcase()) # AaBb
  5. # title():按照title的格式将字符串进行修改
  6. print("hello world".title()) # Hello World

4、is 数字系列

  1. # 在python3中
  2. num1=b'4' # bytes
  3. num2=u'4' # unicode,python3中无需加u就是unicode
  4. num3='四' # 中文数字
  5. num4='Ⅳ' # 罗马数字
  6. # bytes、unicode
  7. print(num1.isdigit()) # True
  8. print(num2.isdigit()) # True
  9. print(num3.isdigit()) # False
  10. print(num4.isdigit()) # False
  11. # unicode
  12. print(num2.isdecimal()) # True
  13. print(num3.isdecimal()) # False
  14. print(num4.isdecimal()) # False
  15. # unicode、中文数字、罗马数字
  16. print(num2.isnumeric()) # True
  17. print(num3.isnumeric()) # True
  18. print(num4.isnumeric()) # True

5、is 其他

  1. name="JACK123"
  2. print(name.isalpha()) # False 只能由字母组成
  3. print(name.isalnum()) # True 字母或数字组成
  4. print(name.islower()) # False 小写或数字组成
  5. print(name.isupper()) # True 大写或数字组成
  6. name=" "
  7. print(name.isspace()) # True 是否为空格
  8. name="Hello world"
  9. print(name.istitle()) # False 是否为title格式
  • 该类型总结:
    • 存一个值
    • 有序
    • 不可变

数据类型:int、float、str、list 的基本使用及内置方法,可变不可变类型 - 图2

列表list的基本使用

  • 用途:按照索引存放多个任意类型的值,每个位置代表一个元素
  • 定义方式:在[ ]内用逗号分隔开多个任意类型的值
  1. l = [11,11.33,"xxx",[11,22,33]] # l = list(...)
  2. print(type(l)) # <class 'list'>
  3. # 列表内一般都会存储相同数据类型的数据
  4. # list数据类型转换:把可迭代的类型转成列表(即支持for循环的数据类型转换成列表)
  5. print(list(123)) # 报错
  6. print(list(123.21)) # 报错
  7. print(list('hello')) # ['h', 'e', 'l', 'l', 'o']
  8. print(list({'name': 'jason', 'pwd': 123})) # ['name', 'pwd']
  9. print(list((11, 22, 33))) # [11, 22, 33]
  10. print(list({11, 22, 33})) # [33, 11, 22]
  11. # 可以被for循环遍历的类型都是可迭代的
  12. res = list("hello")
  13. print(res) # ['h', 'e', 'l', 'l', 'o']
  14. res = list({"k1":111,'K2':2222})
  15. print(res) # ['k1', 'K2']
  16. print(list(range(1000)))

list 常用操作

优先掌握的操作

1、按索引存取值(正向存取+反向存取):即可存也可以取

  1. l = [111,222,333]
  2. print(id(l)) # 140665613558536
  3. l[0] = 666 # 将索引0的值改为666
  4. print(l) # [666, 222, 333]
  5. print(id(l)) # 140665613558536 内存地址不会发生变化
  6. # l[3] = 777 # 报错!列表索引不能超出范围

2、切片(顾头不顾尾,步长)

  1. l = [11,22,33,44,55,66,77,88,99]
  2. res = l[1:7:2] # 从索引1开始切,7结束,每次间隔2
  3. print(res) # [22, 44, 66]
  4. res = l[:] # 复制 copy
  5. print(res) # [11, 22, 33, 44, 55, 66, 77, 88, 99]
  6. res = l[::-1] # 复制降序
  7. print(res) # [99, 88, 77, 66, 55, 44, 33, 22, 11]

3、统计列表内元素的个数(长度)

  1. l = ["aaa", 111, 2222]
  2. print(len(l)) # 3

4、成员运算in和not in

  1. l = ["aaa",111,2222]
  2. print(111 in l) # True
  3. print(333 not in l) # True

5、添加值

  1. # 方式1:尾部追加(将括号内的数据当成一个整体追加到列表末尾)
  2. l = [111,222,333]
  3. l.append(444)
  4. l.append(555)
  5. print(l) # [111, 222, 333, 444, 555]
  6. # 方式2:插入元素(将括号内的数据当成一个整体插入到索引指定位置)
  7. l = [111,222,333]
  8. l.insert(1,6666) # 索引1的位置插入值6666
  9. print(l) # [111, 6666, 222, 333]
  10. l = [111,222,333]
  11. res = l.append(444) # 值
  12. res = l.insert(1,444)
  13. print(res) # None
  14. print(l) # [111, 444, 222, 333, 444]
  15. # 方式3:扩展元素,往列表里面一次加多个值(相当于for循环+append操作)
  16. l = [111, 222, 333]
  17. l.extend([444, 555, 666])
  18. print(l) # [111, 222, 333, 444, 555, 666]
  19. l1 = [111, 222, 333]
  20. l2 = [444, 555, 666]
  21. for i in l2:
  22. l1.append(i)
  23. print(l1) # [111, 222, 333, 444, 555, 666]

6、删除

  1. l = [111,222,333]
  2. # del 万能删除,del是关键字delete缩写
  3. del l[0] # 根据索引直接删除
  4. print(l) # [222, 333]
  5. # remove(指定元素)
  6. res = l.remove(222) # 括号内指定需要移除的元素值
  7. print(l) # [111, 333]
  8. print(res) # None
  9. # pop(指定索引)
  10. res = l.pop(1) # 括号内指定需要弹出的元素索引值
  11. print(l) # [111, 333]
  12. print(res) # 222 可以有返回值
  13. res = l.pop() # 括号内如果不写参数则默认弹出列表尾部元素
  14. print(l) # [111, 222]
  15. print(res) # 333

7、循环

  1. l = [111,222,333]
  2. for x in l:
  3. print(x)
  4. '''
  5. 111
  6. 222
  7. 333
  8. '''
  9. for i,x in enumerate(l):
  10. print(i,x)
  11. '''
  12. 0 111
  13. 1 222
  14. 2 333
  15. '''

list 内置方法

需要掌握的操作

  1. l = [11, 22, 33, 44, 33, 55]
  2. new_l = l.copy() # 相当于 new_l = l[:] 浅拷贝
  3. print(new_l) # [11, 22, 33, 44, 33, 55]
  4. # len():列表内元素的个数(长度)
  5. print(len(l)) # 6 就是 l._len_()
  6. # index():查看某一个元素出现的索引
  7. print(l.index(33)) # 2 对应2号索引
  8. # print(l.index(777)) # 找不到就报错
  9. # count():统计某一个元素出现的个数
  10. print(l.count(33)) # 3 出现3次
  11. # clear():清空列表,把列表里面所有元素都删掉
  12. l.clear()
  13. print(l) # [] 剩下空列表
  14. # reverse():把列表里面的元素倒过来
  15. l.reverse()
  16. print(l) # [55, 33, 44, 33, 22, 11]
  17. # sort():排序
  18. l = [11, -3, 9, 7, 99, 73]
  19. l.sort() # 默认从小到大的顺序
  20. print(l) # [-3, 7, 9, 11, 73, 99]
  21. l.sort(reverse=True) # 从大到小的顺序
  22. print(l) # [99, 73, 11, 9, 7, -3]
  • 该类型总结:
    • 存多个值
    • 有序
    • 可变

可变不可变类型

数据类型:int、float、str、list 的基本使用及内置方法,可变不可变类型 - 图3

可变类型:值改变,内存地址不变,其实就是在修改原值,原值是可变类型

  1. l = [111,222,333]
  2. print(id(l)) # 140478665085320
  3. l[0] = 66666 # 将索引0的值改为66666
  4. print(l) # [66666, 222, 333]
  5. print(id(l)) # 140478665085320

不可变类型:值改变,内存地址肯定变,其实是产生了新值,原值是不可变类型

  1. x = 1
  2. x = 10
  3. print(id(x)) # 4419200576
  4. x = 11
  5. print(id(x)) # 4419200576