• Python字符串


    十,字符串

    字符串的定义与输入

    在python中,用引号引起来的都是字符串。还有input函数输入的,str函数转换的

    示例

    string1 = "hello"
    string2 = 'hello'
    string3 = """hello 
    python"""
    string4 = '''hello
    world'''
    string5 = input("input anything: ")
    string6 = str(18)
    print(isinstance(string1, str))
    
    isinstance判断数据类型返回True或者False

    字符串的拼接

    以下三种方式拼接字符串

    name = "张三"
    age = "23"
    str1 = "==="+name+"==="
    str2 = "===%s==="%(name)
    str3 = "==={}===".format(name)
    print(str1, str2, str3)

      字符串的下标

    字符串,列表,元组都属于序列,所以都会有下标

    什么是下标

     示例:将字符串遍历打印

    str1 = "Hello Python"
    for i in str1:
        print(i,end=" ")
    

    示例: 将字符串遍历打印,并对应打印出下标

    str1 = "Hello Python"
    for i, j in enumerate(str1):
        print(i, j)
    

    输出

    0 H
    1 e
    2 l
    3 l
    4 o
    5  
    6 P
    7 y
    8 t
    9 h
    10 o
    11 n
    

    字符串的切片,倒序

    字符串,列表,元组都属于序列,所以都可以切片 

    str1 = "abcdefg"
    print(str1[0:3]) # 取第1个到第3个字符(注意:不包含第4个字符即下标为3的字符) abc
    print(str1[2:5]) # 取第3个到第5个字符(注意:不包含第6给字符即下标为5的字符) cde
    print(str1[0:-1]) # 取第1个到倒数第2个(注意:不包含最后一个) 针对此例等同于[0:6]
    print(str1[1:]) # 取第2个到最后一个
    print(str1[:]) # 全取 同str1或者str1[0:7]
    print(str1[0:5:2]) # 取第1个到第5个,但是步长为2
    print(str1[::-1]) # 倒序
    

     小结:

    下标:类似一个字符串里的字符编号,通过下标可以轻松找到第N给字符

      循环遍历“可以通过遍历打印字符

      切片:可以通过下标得到字符串一定范围的字符

    字符串的常见操作

    示例

    abc = "hello,nice to meet you"
    
    print(len(abc))  # 调用len()函数来计算长度
    print(abc.__len__())  # 使用字符串的__len__方法来计算字符串的长度
    print(abc.capitalize())  # 整个字符串的首字母大写
    print(abc.title())  # 每个单词的首字母大写
    print(abc.upper())  # 全大写
    print(abc.lower())  # 全小写
    print("ABCDabcd".swapcase())  # 大小写互换
    
    print(abc.center(50, "*"))  # 一共50个字符,字符串放中间,不够的两边补*
    print(abc.ljust(50, "*"))   # 一共50个字符,字符串放左边,不够的两边补*
    print(abc.rjust(50, "*"))   # 一共50个字符,字符串放右边,不够的两边补*
    
    print(" haha
    ".strip())    # 删除字符串左边和右边的空格和换行
    print(" haha
    ".lstrip())   # 删除字符串左边的空格和换行
    print(" haha
    ".rstrip())   # 删除字符串右边的空格和换行
    
    print(abc.endswith("you"))  # 判断字符串是否已you结尾 返回True或者False
    print(abc.startswith("hello"))  # 判断字符串是否以hello开头
    
    print(abc.count("e"))   # 统计字符串e出现了多少次
    
    print(abc.find("nice"))  # 找出nice在字符串的第1个下标,找不到返回-1
    print(abc.rfind("e"))   # 找出最后一个e字符串的下标,找不到返回-1
    print(abc.index("nice"))    # 与find类似,区别是找不到会有异常(报错)
    print(abc.rindex("e"))  # 与rfind类似,区别是找不到会有异常(报错) 

    判断字符格式

    print(abc.isalnum())    # 是否为数字字母混合(可以有大写字母小写字母数字任意组合)
    print(abc.isalpha())    # 是否全为字母
    print(abc.isdecimal())
    print(abc.isdigit())
    print(abc.islower())    # 是否小写
    print(abc.isnumeric())
    print(abc.isspace())    # 是否全部是空格
    

      示例

    使用input输入字符判断输入的是数字 纯大写字母,纯小写字母,大小写混合还是其他

    char = input("输入")
    if char.isdigit():
        print("是你输入的是数字")
    elif char.isalpha():
        if char.isupper():
            print("输入的是大写")
        elif char.islower():
            print("输入的是小写")
        else:
            print("输入的是大小写混合")
    else:
        print("输入的是其他")
    

      

    数字,字符串,元组是不可变类型.下面的操作可以替换字符串的值,但原字符串没有改变。 

    aaa = "hello world,itcast"
    bbb = aaa.replace('l', 'L', 2)  # 从左到右把小写l替换成大写L ,最多替换2个
    print(aaa)  # 原值不变
    print(bbb)  #  改变的值赋值给了bbb变量,这里打印的是替换后的值
    

      字符串和列表转换操作

    print("root:x:0:0".split(":"))  # 以:为分隔符,分割成列表
    print("root:x
    :0:0".splitlines()) # 以
    为分隔符,分割成列表
    print(" ".join(['df','-h']))    # 把列表元素以引号内分隔符合成字符串
    

      

    十一,列表-list

    列表是一种基本的序列数据结构(字符串和元组也属于序列)

    列表是一种可变值的数据类型

    列表的创建

    使用中括号括起来,里面的数据称为元素。可以放同类型数据,也可以放不同类型数据,但通常是同类型。

    name_list = ["张三", "李四", "王五", "马六"]
    print(name_list)
    

    列表的下标

    列表下标和字符串一样

    示例

    name_list = ["张三", "李四", "王五", "马六"]
    print(name_list)
    

      输出

    0 张三
    1 李四
    2 王五
    3 马六
    

    列表的切片,倒序

    示例

    name_list = ["张三", "李四", "王五", "马六"]
    print(name_list[::-1])  #通过切片倒序 输出['马六', '王五', '李四', '张三']
    name_list.reverse() #通过reverse操作倒序,并且直接改变原数据序列 返回为None
    print(name_list)
    

    列表的常见操作

    name_list.append("王麻子")     # 在列表最后增加一个元素
    print(name_list)
    name_list.insert(2, "王麻子")  # 插入到列表,变成第3个,原列表第3个变成第4给以此类推
    print(name_list)
    name_list[0] = "张三丰"    # 修改元素
    print(name_list)
    name_list.remove("王麻子") # 删除,只会删除匹配的第一个元素
    print(name_list)
    name_list.pop() # 删除最后一个元素
    print(name_list)
    name_list.pop(2) # 删除小标为2的元素即第3个元素
    print(name_list)
    # del name_list   # 删除整个列表,相当于没有定义整个列表
    print(name_list.index("张三丰"))   # 找出对应元素的下标
    name_list.reverse() # 反转列表
    print(name_list)
    name_list.sort()    # 排序列表,按ASCII编码排序
    print(name_list)
    name_list.clear()   # 清空列表但是不删除列表
    print(name_list)
    

    列表合并

    list1 = ["haha", "hehe", "heihei"]
    list2 = ["xixi", "hoho"]
    list1.extend(list2) # 类似于字符串相加
    # list1 += list2
    print(list1)
    

    双列表和列表嵌套

    # 双列表
    name_list = ["zhangsan", "lisi", "wangwu", "maliu"]
    salary = [18000, 16000, 20000, 15000]
    for i in range(name_list.__len__()):
        print("{}的月收入为{}元".format(name_list[i].ljust(10, " "), salary[i]))
    # 列表嵌套
    emp = [["zhangsan", 18000], ["lisi", 16000], ["wangwu", 20000], ["maliu", 15000]]
    for i in range(emp.__len__()):
        print("{}的月收入为{}元".format(emp[i][0].ljust(10, " "), emp[i][1]))
    

    十二,元组

    元组相当于只读的列表,因为只读所以没有append remove修改等操作

    它只有两个操作方法 count index

    元组,字符串,列表都属于序列,所以元组也可以切片

    元组的创建

    tuple1 = (1, 2, 3, 4, 5)
    print(type(tuple1))
    print(tuple1.index(3))
    print(tuple1.count(1))
    print(tuple1[2:5])
    
    tuple1[4] = 2   # 修改元组会报错
    

    十三,字典

    字典:是一种key:value(键值对)类型的数据,它是无序的(没有像列表那样的索引,下标).它是通过key来找value 底层就是hash表,查找速度快;如果key相等,会自动去重(去掉重复值)

     字典的创建

    dict1 = {
        'stu01': "zhangsan",
        'stu02': "lisi",
        'stu03': "wangwu",
        'stu04': "maliu"
    }
    print(type(dict1))
    print(len(dict1))
    print(dict1)
    

    字典的常见操作

    # 增
    dict1["stu05"] = "tianqi"   # 类似修改,key存在就修改,如果key不存在就增加
    print(dict1)
    # 改
    dict1["stu04"] = "马六"
    print(dict1)
    # 查
    print(dict1["stu01"]) # 存在返回该key对应的value 如果key不存在会返回keyerror错误
    print(dict1.get("stu01")) # 存在返回该key对应的value 如果key不存在会返回None
    # 删
    dict1.pop("stu05")  # 删除这条 也可以del dict1["stu05"]来删除
    print(dict1)
    dict1.popitem()     # 删除显示的最后一条
    print(dict1)
    dict1.clear()   # 清空字典内容
    print(dict1)
    del dict1   # 删除字典
    print(dict1)
    

    其他操作

    print(dict1.keys()) # 打印所有keys
    print(dict1.values())   # 打印所有value
    print(dict1.items())    # 字典转换成列表套元组 输出为dict_items([('stu01', 'zhangsan'), ('stu02', 'lisi'), ('stu03', 'wangwu')])
    # 上面三种可以使用for循环遍历
    
    print("stu01" in dict1) # 判断键是否在字典中,返回True或者False
    print(list(dict1))  # 以列表方式列出key
    
    for i in dict1.items():
        print(i)    # 循环键值对 返回的是元组 需要得到对应的key即value使用下标0 1即可
                    #  ('stu01', 'zhangsan')
                    #  ('stu02', 'lisi')
                    #  ('stu03', 'wangwu')
    
    dict1.setdefault("stu08", "老八") # 有这个key,则不改变;没有这个key,则增加这个key和value
    print(dict1)
    # 以上操作类似下面的判断
    # if "stu08" in dict1:
    #     pass
    # else:
    #     dict1["stu08"] = "老八"
    

      练习:打印所有value为2的key

    dict1 = {
        "张三": 2,
        "李四": 3,
        "王五": 4,
        "马六": 2
    }
    for i in dict1.items():
        if i[1] == 2:
            print(i[0])
    

      解析:items返回的是键值对的元组

    字典练习

    city={
        "北京": {
            "东城": "景点",
            "朝阳": "娱乐",
            "海淀": "大学",
        },
        "深圳": {
            "罗湖": "老城区",
            "南山": "IT男聚焦",
            "福田": "华强北",
        },
        "上海": {
            "黄埔": "xxxx",
            "徐汇": "xxxx",
            "静安": "xxxx",
        }
    }
    
    # 1,打印北京东城区的说明(也就是打印出"景点")
    print(city["北京"]["东城"])
    # 输出字符串 景点
    # 2,修改北京东城区的说明,改为"故宫在这"
    city["北京"]["东城"] = "故宫在这"
    print(city["北京"]["东城"])
    # 3,增加北京昌平区及其说明
    city["北京"]["昌平"] = "北京郊区"
    print(city)
    # 4,修改北京海淀区的说明,将大学改为"清华","北大","北邮"3个大学的列表
    city["北京"]["海淀"] = ["清华", "北大", "北邮"]
    print(city)
    # 5,在大学列表增加一个"北影"
    city["北京"]["海淀"].append("北影")
    print(city)
    # 6,循环列出北京的区名,并在前面显示序号,以1开始
    for index, i in enumerate(city["北京"]):
        print(index+1, i)
    # 7,循环打印除北京海淀区的大学,并在前面显示序号,以1开始
    for index, i in enumerate(city["北京"]["海淀"]):
        print(index+1, i)
    

    十四,集合

    集合和字典一样都是使用大括号.但集合没有value,相当于只有字典的key

    字符串,列表和元组属于序列,是有序的,但集合是无序的,所以不能通过下标来查询和修改元素。

    集合的特点

    1,天生去重

    2,可以增删

    3,可以方便的求交集,并集,补集

  • 相关阅读:
    323. Number of Connected Components in an Undirected Graph
    418. Sentence Screen Fitting
    417. Pacific Atlantic Water Flow
    416. Partition Equal Subset Sum
    415. Add Strings
    245. Shortest Word Distance III
    [AHOI2009]维护序列
    [洛谷P1439]排列LCS问题
    [Vijos P1369]难解的问题
    [codevs3657]括号序列
  • 原文地址:https://www.cnblogs.com/minseo/p/13831958.html
Copyright © 2020-2023  润新知