欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python【day 15】基本数据类型-int str bool list

程序员文章站 2023-11-09 17:48:40
'''''' ''' 1 python的定义 是一门弱类型的解释性的高级编程语言 这里的高级是相对低级(例如:汇编语言等) 高级编程语言和低级编程语言的区别 1、前者更接近于人的理解--字母组成的语法 2、后者更接近于计算器的理解--字节码、二进制 2 python的特点 人生苦短,我用python... ......
''''''
'''
1 python的定义
    是一门弱类型的解释性的高级编程语言
    这里的高级是相对低级(例如:汇编语言等)

    高级编程语言和低级编程语言的区别
    1、前者更接近于人的理解--字母组成的语法
    2、后者更接近于计算器的理解--字节码、二进制

2 python的特点
    人生苦短,我用python
    简洁

3 为什么学习python
    爱好,人工智能,机器学习,大数据

4 python第一个程序
    print('hello world')
    方式1:在cmd中输入python后,在交互命令行,输入上述语句,enter
    方式2:在本地d盘新建一个hello.py的文件,将上述语句复制到.py文件中,保存后
           在cmd中,进入到d盘, 执行命令 python hello.py
    方式3:将上述语句写入pycharm后,run

5 变量的概念
    变量是程序运行过程中产生的中间值--temp(暂存属性,开辟一个内存空间,用于保存值)
        1、内存空间的名字就是变量的名字
        2、内存空间保存的值就是变量的值
        比如: a=10  变量名字就是a 变量的值是10

6 变量的命名规则:
    1、组成:数字、字母、下划线组成
    2、开头:不能是数字开头
    3、关键字:不能是关键字,比如:list
    4、长度:不要太长
    5、中文:不要是中文
    6、有意义:要有意思(一看名字,就知道变量大概表示的意思)
    7、大小写:严格区分大小写
    8、写法:推荐下划线或者驼峰法命名
        下划线:hello_world(单词之间,下划线分隔开)
        驼峰法:helloworld  (首字母不大写,第二个单词开始,首字母大写)

7 变量的数据类型
    1 int 整数  + - * / // bit_length()
    2 str 字符串
        1、表示方式 ' " \''' \"""   注意点:这里的\ 表示转义
            1 单引号''
            2 双引号""
            3 三个单引号 ''' '''
            4 三个双引号 """ """
        2、* 重复
        3、+ 拼接
        4、%s 格式化
        5、索引和切片
            s1[start:end:step]  左闭右开
            1 start 起始索引号-下标
            2 end   结束索引号-下标 (取不到)
            3 start 步长(不写,默认是1)

        6、常见内置方法
            1 upper()  转换成大写字母

            2 strip() 去掉字符串两端的空白
               strip('ab')  去掉字符串两端的'ab'

            3  replace(old,new,count)
                参数3 count表示从左到右替换的次数
                参数3不写,默认是全部替换

            4  split() 把字符串拆分成几个子字符串,每个子字符串作为列表的元素,返回的是列表
                默认分隔符是空格
                split('_') 分隔符是下划线

            5  '_'.join() 把参数iterable中的字符串通过连接符'_'拼接成字符串
                写法: '连接符'.join(iterable)
                注意点:
                    1 iterable中的元素必须是str,而不能是int
                    2 join不是字符串的内置方法

            6  startswith()
                写法:s1.startwith('a')
                作用:判断字符串是否以字母'a'开头

            7 find index count
                写法:s1.find('a')
                作用:从字符串s1中查找字符‘a’,返回索引号;如果找不到,就返回-1  --更健壮  推荐

                写法:s1.index('a')
                作用:从字符串s1中查找字符‘a’,返回索引号;如果找不到,就报错

                写法:s1.count('a')
                作用:从字符串s1中统计字符'a'出现的次数,返回出现的次数int
                    如果是0次,代表没有找到(也有查找的功能)
            8 isdigit()
                写法:s1.isdigit()
                作用:判断字符串是否是数字形式的,是的话,返回true

            9 len()
                写法:len(s1)
                作用:返回字符串的长度

        7、字符串是iterable
            for i in s1:
                循环体(break continue)
            else:
                pass

        8、字符串的编码方式
            1 ascii             8位 1个字节
            2 gbk 国标码 gb2312 16位 2个字节
            3 unicode 万国码    32位 4个字节
            4 utf-8 可变的unicode
                1 英文字符  8位 1个字节
                2 欧洲字符 16位 2个字节(德文、法文、西班牙文等字符)
                3 中文字符 24位 3个字节
            字符串编码后变成字节bytes
                编码-加密-压缩
            字节解码后变成字符串
                解码-解密-解压
                bytes.decode()  #解码

    3、bool 布尔类型
        取值:true false
        作用:用于判断的
        类型转换:
            false:0或者空('' [] () {} set() none)
                        空字符串、空列表、空元组、空字典、空集合、空none
                注意:空格、\r \n \t都是true
            true:除了上面的,其他都是true
            注意点:类型转换false可以直接用于判断
        备注:
            例子1
            content1 = input('请输入你的名字:')  #输入的是字符串
            if content1:  #判断空  如果不输入内容,直接回车,就提示-你没有名字 注意点:和下面行的结果不一样
            # if content1 == '':  #如果不输入内容,直接回车,就打印-你的名字是
                print('你的名字是 ',content1)
            else: #如果你什么都没有输入,这个content1就是空字符串
                print('你没有名字')

            例子2
            li1 = [1,2,3]
            if li1:  #这里就是在判断列表是否为空, 和下面行等效
            # if li1 == []:
                print(li1)
            else: #
                print('空列表')

    4、列表 list
        表示:[],元素之间是逗号隔开
        概念:列表是一个容器,可以存放任意数据类型
            和其他开发语言的数组array类似
        特点:
            1、列表是可变的
            2、列表由索引和切片功能
        常见操作:
            1 增
                1 append(元素值)
                    在列表最后面追加元素
                2 insert(i,元素值)
                    在列表指定位置前插入元素
                3 extend(iterable)
                    把iterable中的元素依次添加到原列表
            2 删
                1 pop()
                    参数不写,默认是删除最后一个元素
                    参数也可以指定索引号,来删除
                2 remove
                    删除指定的元素值
                3 del
                    切片或者单个删除
                4 clear
                    清空元素
            3 改
                1 按照索引-下标修改
                    切片修改
                    单个索引号修改
            4 查
                1、单个索引号取值
                2、for循环遍历

                01列表-增加元素小结
                    1 append是末尾追加新元素--最常用
                    2 insert是指定位置前插入新元素
                    3 extend是将iterable中元素依次添加到原列表
                02列表-删除元素小结
                    1 pop
                        不带参数,默认删除列表最后一个元素,并且获取到被删除的最后一个元素
                        指定参数,删除指定位置-索引号的元素,并且获取到被删除的指定位置的元素
                    2 remove
                        参数:元素值(不是位置)
                        作用:删除指定元素值
                    3 del
                        1 参数:单个位置-索引号
                          写法:del 列表(位置)
                          作用:删除单个位置的元素
                        2、参数:切片
                          写法:del 列表(切片)
                          作用:切片删除多个位置的元素
                        3、参数:列表名
                           写法:del 列表名
                           作用:删除整个列表,回收内存空间(和清空clear是不同的)
                        4、参数:字典的key
                            写法:del 字典名[key]
                            作用:删除字典中指定key对应的键值对
                        综上,del的作用
                        1、可以删除单个位置的元素
                        2、可以切片删除多个元素
                        3、可以删除整个列表,回收内存空间
                        4、不仅是列表,也适用于字典
                    4 clear
                        参数:为空
                        写法:li1.clear()
                        作用:清空列表的元素,变成空列表
                             清空-列表的内存空间没有被回收(和del li1不一样)
                03列表-修改元素小结
                    1 单个位置修改--单个元素修改
                        写法:li3[1] = 'james'
                        作用:指定位置-索引号进行列表单个元素的修改

                    2、切片多个元素修改
                        1 2个元素改成1个元素
                            正确写法:li3[1:3] = ['james']
                            错误写法:li3[1:3] = 'james'   注意点

                        2 2个元素改成2个元素
                            写法:li3[1:3] = ['james','kevin']

                        3 2个元素改成3个元素
                            写法:li3[1:3] = ['james','kevin','lucy']
                04列表-查询元素小结
                    1 单个查询-单个取值-按照单个位置-索引号-下标
                    2 多个查询-多个取值-按照切片
                    3 全部查询-全部取值-for循环遍历

            5、其他常见操作
                1 count() 计数
                    计算某个元素在列表出现的次数
                2 index() 查找
                    返回某个元素在列表中的位置-索引号-下标
                3 sort() 排序
                    把列表的元素进行排序,默认升序,列表本身修改了
                4 reverse()反转
                    把列表的元素反转,列表本身修改了

            6、列表在循环遍历的过程中,不能删除元素,因为涉及到元素的移动
               解决办法:
               把要删除的元素,添加到新的列表中,循环新列表,删除老列表

            7、深浅拷贝和赋值
                1、= 赋值,两个变量指向同一个内存地址,不同的变量只是同一个内存地址的不同别名
                2、浅拷贝,只拷贝第一层(第二层及以上还是指向同一个内存空间,没有实现拷贝)
                    li1.copy()
                    li1[:]
                    检验是否是一个内存空间的办法:看变量的id值
                3、深拷贝,不仅拷贝第一层,第二层及以上都拷贝
                    li1.deepcopy()
                扩展:在其他的编程语言(比如:java),叫做克隆,也分为深浅克隆

                浅拷贝和深拷贝的类比
                1、浅拷贝是第一层内存空间分开,第二层及以上内存空间是同一个
                         --第一层独立,第二层及以上是一变都变
                          第一层就是家庭夫妻财务aa
                          第二层就是家庭夫妻设立的共同账户
                2、深拷贝是第一层内存空间分开,第二层及以上内存空间也分开--每层完全独立
                          类比:家庭夫妻财务完全aa,没有设立共同账户

            8、列表推导式
                写法
                    [结果 for循环 if判断]
                例子:
                    li7 = [1,2,3]
                    #需求:将列表中的奇数,变成其平方数
                    li8 = [i*i for i in li7 if i%2 == 1 ]
                    print(li8)  #[1, 9]

'''