zoukankan      html  css  js  c++  java
  • day5 ---- 数据类型及常用方法(字符串、列表)

    目录

    一、数字型(整型、浮点型)

    二、字符串

    三、列表

    四、补充前提知识

    学习思路:

    #======================================基本使用======================================
    #1、用途
    
    #2、定义方式
    
    #3、常用操作+内置的方法
    
    #======================================该类型总结====================================
    #存一个值or存多个值
        
    #有序or无序
    
    #可变or不可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)

     

    前提知识:

      可变类型:值变了,内存地址id 不变,这样的称为可变类型。

      不可变类型:值变了,内存地址 id 也改变,称为不可变类型。

    两句话(需要注意):1、id相等,值一定相等!

             2、id不相等,值不一定相等!

    一、数字型

    整型:int

     基本使用:

    1、用途:记录整型数据可以存储的内容,如银行卡号,QQ号等等

    2、定义:age = 18  # age = int(18)

    3、内置方法:

      十进制转其他进制

    # 10进制转其他进制
    
    # 10进制转二进制
    print(bin(12))  # 0b1100  0b表示后面的数字是二进制数
    
    # 10进制转八进制
    print(oct(12))  # 0o14  0o表示后面的数字是八进制数  14 >>> 1*(8**1) + 4*(8**0))
    
    # 10进制转16进制
    print(hex(12))  # 0xc  0x表示后面的数字是十六进制数

       其他进制转10进制

    # 其他进制转十进制
    
    print(int('1100',2))  # int可以传第二个参数,表示的是第一个参数到底是什么进制  然后转成十进制
    
    print(int('14',8))
    
    print(int('c',16))

     类型总结:

    1、只能存一个值

    2、因为只有一个值,所以无所谓有序无序

    3、不可变类型:因为值不同id也不同

    浮点型:float

     基本使用:

    1、用途:存储使用小数记录的数据内容,如圆周率、身高、体重等等非整数型数据。

    2、定义:salary = 3.1  # salary = float(3.1)

    3、内置方法:可以将纯数字型字符串转为浮点型数据

    res = float('1.11')
    >>> 1.11

    二、字符串

    基本使用:

    1、用途:描述性

    2、定义:单引号,双引号,三引号

    3、内置方法:

    字符串内置方法--优先需要掌握的

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

    s = 'hello big baby!'
    print(s[0])
    h
    print(s[-1])
    !

    2、切片(顾头不顾尾,步长):从一个长的字符串中截取一小段形成一个新的字符串

    # 左边的固定就是头,右边固定就是位  没有说按数字来分头尾
    
    s = 'hello big baby!'
    print(s[0:5])
    hello
    print(s[0:10:2])
    hlobg
    View Code

    了解负数取值

    s = 'hello big baby!'
    
    print(s[-1])  # -1 代表字符串的尾部
    !
    
    print(s[0:10:-1])  # 切片取值默认是从左到右的,所以从0开始想-1取值的话,结果为空
    print(s[10:0:-1])  # 切片起始定位在下标为10的位置,-1代表反方向0的位置取步长
    b gib olle
    
    print(s[-1:-10:-1])  # -1代表字符串尾部,-10代表向左取值,步长为-1
    !ybab gib
    了解负数取值

    3、长度len(),统计字符串中字符的个数

    s1 = 'CQUPT'
    len(s1)
    5
    

    4、成员运算 in 和not in :判断一个子字符串是否在一个大的字符串中

    print('egon' in 'egon is a big sb and he is the first handsome man in hongqiao')
    True
    print('jason' not in 'egon is the first handsome man!')
    True

    5、去掉字符串左右两边的字符 strip ,不管两边的

    注意:内置方法一律使用句点符 “.”

    username = input(输入你的名字:").strip()  # strip()方法可以去掉输入字符两边的空格等
    if username == 'jason':
        print('欢迎登录!')
    name1 = ' jason'
    name2 = 'jason'
    name1 == name2  # 返回False,两个变量不相等,name1中有空格
    False
    
    
    name1 = ' jason'.strip()  # 去掉两端的空格
    name2 = 'jason'
    name1 == name2
    True
    View Code

      去掉字符串中左右两端特定的字符,如

    1 name = '&&&egon$$jason&&'
    2 name.strip('&')
    3 'egon$$jason'

      去字符串左边字符 lstrip() ,去掉字符串右边字符 rstrip()

    1 name = '&&&egon$$jason***'
    2 name.lstrip('&')
    3 'egon$$jason***'
    4 name.rstrip('*')
    5 '&&&egon$$jason'

    6、切分 split :针对按照某种分隔符组织的字符串,可以用 split 将其切分成列表,然后取值。

    1 data = 'egon|jason|sean and 小猴'
    2 data.split('|')
    3 ['egon', 'jason', 'sean and 小猴']

      注意:1、按照什么分隔符来切分就会将该分隔符在字符串中取消

         2、split切分出来的结果是一个列表

         3、split 指定位置来切分

    1 # split 指定位置切分
    2 
    3 data.split('j')
    4 ['egon|', 'ason|sean and 小猴']

      补充split()方法后面跟着两个参数,'特定字符' 和 ‘切割次数’

    str1 = 'egon&jason&sean&tank&小猴'
    str1.split('&')
    ['egon', 'jason', 'sean', 'tank', '小猴']
    str1.split('&',2)
    ['egon', 'jason', 'sean&tank&小猴']

    7、循环

    data = 'egon|jason|sean'
    for i in data:
        print(i)

    需要掌握的

    1、strip()、lstrip()、rstrip()

    2、lower() upper() :将字符串全部转为小写或大写形式

    1 name = ' jaSOn'
    2 name.lower()
    3 ' jason'
    4 name.upper()
    5 ' JASON'

    3、startswith() 和 endswith() :判断字符串是以什么开头和以什么结尾!

    1 data = 'shanghai is a cold city!'
    2 data.startswith()  #报错原因是 ()内必须输入一个元素来进行判断
    3 Traceback (most recent call last):
    4   File "<input>", line 1, in <module>
    5 TypeError: startswith() takes at least 1 argument (0 given)
    6 
    7 data.startswith('h')
    8 False
    View Code

    4、format 的三种玩法(Python推荐用 format 做格式化输出,但是一般还是占位符 %s 使用的比较多)

      a、第一种按位置占,原理和%s一样

    1 str1 = "my name is {} my school is {}".format('jason','重邮')
    2 print(str1)
    3 my name is jason my school is 重邮

      b、第二种是按索引占位     --- 该索引指的是format 括号里参数的索引

    1 str1 = "my name is {2} my school is {2}".format('jason','重邮','信科')
    2 print(str1)
    3 my name is 信科 my school is 信科

      c、指名道姓占位(关键字传参)

    str1 = "my name is {name} my school is {school}".format(name='jason',school='重邮',room='信科')
    print(str1)
    my name is jason my school is 重邮

    5、split() 、rsplit()

    6、join() :将容器类型中的多个字符通过指定字符拼接成一个字符串

    1 data = 'egon|jason|sean'
    2 data.split("|")
    3 ['egon', 'jason', 'sean']
    4 res =data.split("|")
    5 res_1 = "$".join(res)  # 使指定字符拼接
    6 print(res_1)
    7 egon$jason$sean

      补充: 由以上程序结果可知,不同数据类型是无法拼接的,只能拼接字符串,因为程序结果就是字符串

    7、replace() 替代方法

    进行替代str = 'egon is a open boy!'
    str.replace('egon','jason')
    'jason is a open boy!'

      其中replace()还可以指定第几个元素进行替代  replace(self,old,new,count)

    1 str1 = 'chongqing is beautiful city,and more and more cool girl want to eat chongqing huoguo!'
    2 str1.replace('chongqing','shaghai',1)  # 注意replace()里面的count 是从‘1’开始的,
    3 'shaghai is beautiful city,and more and more cool girl want to eat chongqing huoguo!'

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

    while True:
        age = input('>>>:')
        if age.isdigit():
            age = int(age)
            if age > 28:
                print('阿姨好')
        else:
            print('你他妈的能不能好好输')
    View Code

    需要了解的内置方法

    1、find() rfind()  index() rindex() count

    s = 'kevin is dsb o and kevin is sb'
    str = s.re
    print(s.find('dsb'))  # 返回的是d字符所在的索引值
    print(s.find('xxx'))  # 找不到的时候不报错返回的是-1
    print(s.find('i',0,3))  # 还可以通过索引来限制查找范围
    print(s.index('o'))  # 返回所传字符所在的索引值
    print(s.index('i',0,3))  # 返回所传字符所在的索引值
    print(s.count('n'))  # 统计字符出现的次数

      补充:find 和 index的区别

         1、find 查找指定字符出现第一个字母的索引值,可以指定查找范围,如果找不到返回-1

         2、index 查找指定字符出现第一个字母的索引值,可以指定查找范围,如果找不到就会报错!

    str1 = 'egon&jason&sean&tank&小猴'
    str1.find('egon')
    0
    
    str1.find('egon',0,3)  # 0~3没有索引到,返回-1
    -1
    
    str1.index('egon',0,4)  # 可以看出这里的查询范围也是顾头不顾尾,0~4
    0
    
    str1.index('egon',0,3)  # 报错!
    Traceback (most recent call last):
    View Code

    2、center()  ljust() rjust() zfill()

    s9 = 'jason'
    print(s9.center(12,'*'))
    print(s9.ljust(40,'$'))
    print(s9.rjust(40,'$'))
    print(s9.rjust(40,' '))
    print(s9.zfill(40))

    3、expandtables()

    s10 = 'a	bc'
    print(s10.expandtabs(100))

    4、captalize()  swapcase()    title():将每个单词的首字母进行大写

    s12 = 'hElLo WoRLD sH10'
    print(s12.capitalize())  # Hello world 文本收个单词的首字母大写
    print(s12.swapcase())  # 大小写互换
    print(s12.title())  # 每个单词的首字母大小

    5、is系列--不太需要,用 isdigit()  即可

    类型总结

    1、只能存一个值

    2、有序,(有序,但凡有索引的数据都是有序的)

    3、不可变类型

    三、列表 ---- 内部原理就是 for 循环

    基本用法:

    作用:容器

    定义:[ ] 可以装多个任意类型的值,并用逗号分隔开

    基本的内置方法:

    str = 'abcf'
    list(str)
    ['a', 'b', 'c', 'f']

    由上可以看出:list 内部原理就是for 循环,所以list内部必须放容器类型!

    需要优先掌握的方法

    1、按索引取值(正向取值,负向取值):既可存也可取。

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

    l = [1,2,3,4]
    print(l[0:4])  # 列表的切片
    [1, 2, 3, 4]
    
    print(l[0:4:2])  # 列表按步长切片
    [99, 3]
    
    print(l[0::])  # 第一个:默认到最后    第二个:默认步长为1
    [1, 2, 3, 4]
    
    print(l[5::-2])  # 5大于列表索引下标无意义,6也行,只要大于最大索引值即可,反向取值,步长-2
    [4, 2]  
    
    print(l[6::-1])
    [4, 3, 2, 1]
    
    l[0]=99  # 列表中的元素是可变的,由此退出列表是可变类型。
    l
    [99, 2, 3, 4]
    

    3、列表元素添加*****

      a、尾部添加  append()

    1 list_1 = [1,2,3,4]
    2 list_1.append(99)
    3 list_1
    4 [1, 2, 3, 4, 99]
    View Code

       b、指定位置添加 insert()

    list_1 = [1,2,3,4]
    list_1.insert(2,99)  # 注意:我们添加的元素是在索引值的前面
    list_1
    [1, 2, 99, 3, 4]
    

      c、添加容器,如添加列表等 用 extend()方法

    list_1 = [1,2,3,4]
    list_2 = [33,44,77]
    list_1.extend(list_2)
    list_1
    [1, 2, 3, 4, 33, 44, 77]
    

      由上述代码可以看出,extend()方法的原理就是将list_2的元素for 循环列出来,在append 添加进list_2中

    4、列表删除元素

      a、del()  适用于所有的操作,直接将元素删除       del (列表名[索引值])

      b、 pop() 尾部弹出元素  *****  

    list_1 = [1,2,3,4]
    list_1.pop()
    4
    
    # pop()指定位置删除元素
    list_1 = [1,2,3,4]
    list_1.pop(2)
    3

     c、remove() 删除指定的元素

    list_1 = [1,2,3,4]
    list_1.remove(3)
    list_1
    [1, 2, 4]
    

    5、长度计算 len()

    6、成员运算 in 和 not in

    7、循环    for i in list:

    类型总结:

    1、可以存多个值

    2、有序

    3、可变类型:原因!!! list 内部原理如图所示

  • 相关阅读:
    HTML基础
    JVM内存和JVM调优(五)--分代垃圾回收详述
    JVM内存和JVM调优(四)--如何区分垃圾
    JVM内存和JVM调优(三)--基本GC垃圾回收算法
    JVM内存和JVM调优(二)--引用类型
    JVM内存和JVM调优(一)--堆栈概念
    isAssignableFrom和instanceof
    spring学习(三十九)--自定义注解
    SPRING学习(三十八)--SPRING集成MYBATIS之数据库连接池和多种数据源配置方式(三)
    SPRING学习(三十七)--SPRING集成MYBATIS(二)
  • 原文地址:https://www.cnblogs.com/qinsungui921112/p/11126598.html
Copyright © 2011-2022 走看看