zoukankan      html  css  js  c++  java
  • 字符串 列表 字典 元组 集合常用方法

    1 字符串操作

    1.字符串的索引取值: 字符串[index]

    # 正向取值从0编号,反向取值从-1编号
    res = '12345'
    print(res[0])  # 1
    res = '1,2 ,3, 4, 5'
    print(res[0])  # 1
    res = '1,2 ,3, 4, 5'
    print(res[-1])  # 5

    2.字符串拼接

    ls1 = '1,2345'
    ls2 = 'abcde'
    res = ls1 + ls2
    print(res)  # 1,2345abcde
    # 拼接其他类型
    s1 = 10
    s2 = 'abc'
    s3 = True
    #res = s1+s2+s3
    #print(res)  # 报错 不是同类型
    res = str(s1) + s2 + str(s3)  # 正确 10abcTrue  这种情况只能转化为字符串 不能‘abc’转化为整数类型
    
    res = '%s%s%s' % (s1, s2, s3)  # %s 万能占位符 位置一一对应

    3.字符串长度

    res = '10abcTrue'
    print(len(res))  # 9  字符串长度为9
    print(len(res[0]))  # 1 

    4 字符串切片:

    res = '123456abc'
    print(res[0::])  # 表示从0号位开始到结束 123456abc
    print(res[0:6:])  # 123456  表示从0号位开始到6号位结束 则是 123456
    print(res[3:7:])  # 456a
    print(res[::-1])  # cba654321  # 符号表示倒叙取值
    print(res[::-2])  # ca531  # 倒叙2步取值
    print(res[-1:-6:-1])  # cba65 倒叙 取五位值

    5.成员运算:

    判断某字符串是否在该字符串中 (in 和 not in)

    res = '123456呵呵'
    ls5 = '呵呵'
    print(ls5 in res)  # True
    print(ls5 not in res)  # False

    6 字符串循环。涉及for循环

    res = '123456呵呵'
    for i in res:
        print(i)  # 1 2 3 4 5 6 呵 呵  打印出来每个都是一行 

    7 字符串重要方法

    1.索引(目标字符串的索引位置)

    s1 = '123abc呵呵'
    print(s1.index('b'))  # 4    表示b对应的位置是从0到4的位置
    
    res2 = '1213wsx741wsx'
    print(res2.index('1')) # 0
    print(res2.index('w')) # 4
    # 索引默认只取第一个值的位置
    

      

    2.去留白(默认去两端留白,两端没有空格时也可以去两端指定字符)  res.strip()

    res = '   ***anc * 789***   '
    print(res.strip())  # ***anc*789***  把两端的空格去掉了
    res = '  ***anc * 789***   '
    print(res.strip('*'))  #   ***anc * 789***     当两端有空格时,还是只能去空格
    
    res = '***anc * 789***'
    print(res.strip('*'))  # anc * 789  两端无空格的情况下 去掉两端的*字符
    

      

    3.判断字符串是否是正整数  res.isdigit

    res = '12345'
    print(res.isdigit())  # True
    # 判断是否是负数  首先判定首字母是-号,在判断后面是不是正整数
    res = '-12345'
    res = '-12345'
    
    if res.startswith("-") and res[1::].isdigit(): # 首先判断是否是负数 然后在判断-号后面的数就好 ,
        print("res是负数")
    else:
        print("res是正数")
    

      

     

     4.大小写转换  res.lower() 转化为小写   |  res.upper() 转为大写
    res = 'aBCdEFf'
    print(res.lower())  # 转化为全小写 abcdeff
    print(res.upper())  # ABCDEFF
    
    # 补充  res.islower()  判断是不是小写   |    res.isupper()判断是不是大写
    print(res.islower())  # False
    print(res.isupper())  # False
    

      

     5.以某某开头或结尾
    res = '12345wsx345'
    print(res.startswith("123"))  # True
    res = 'wsx1234edc789'
    print(res.endswith('78'))   # False
    

      

    6.替换 res.replace('y','x',数字) 表示x将替换y, 数字表示将替换几次

    res = 'egon say he is 逗比,egon egon egon!'
    print(res.replace('egon', 'lxx'))   # lxx 替换egon  默认替换所有   lxx say he is 逗比,lxx lxx lxx!
    print(res.replace('egon', 'lxx', 3))  # lxx 替换egon三次   lxx say he is 逗比,lxx lxx egon!
    

      

    7.格式化 只能格式化掉{}的内容

    s8 = 'name:{},age:{}'
    print(s8.format('owen', 18))  # name:owen,age:18   # 默认按位置去掉空字典
    
    print('name:{1},age:{0}, height:{1}'.format('Owen', 18))  # name:18,age:Owen, height:18
    # 指定位置   name:{1}指的是被format()里的索引1的位置值18代替  age:{0}指的是被format()后面索引的0位置的owen代替
    
    print('name:{n},age:{a}, height:{a}'.format(a=18, n="Zero"))  # name:Zero,age:18, height:18
    # 指名道姓

      

    其他格式

    s7 = '123wsx'
    print(s7.isalnum())  # True 由字母和数字组成的
    s9 = '1234'
    print(s9.isalnum())  # True  由字母和数字组成的
    
    s10 = '123qaz' # .isalpha判断是否是字母组成
    print(s10.isalpha())  # False
    

      

    8 其他方法

    # 1. find | rfind:查找子字符串索引,无结果返回-1
    # 2. lstrip:去左留白
    # 3. rstrip:去右留白
    # 4. center | ljust | rjust | zfill:按位填充
    # 语法:center(所占位数, '填充符号')
    # 5. expandtabs:规定	所占空格数
    # 6. captialize | title | swapcase:首字母大写 | 单词首字母大写 | 大小写反转
    # 7. isdigit | isdecimal | isnumeric:数字判断
    # 8. isalnum | isalpha:是否由字母数字组成 | 由字母组成
    # 9. isidentifier:是否是合法标识符
    # 10. islower | isupper:是否全小 | 大写
    # 11. isspace:是否是空白字符
    # 12. istitle:是否为单词首字母大写格式
    

      

    2 列表操作

     列表:

    names = ['a','b','c','d']
    

     

    1、追加:names.append()

    names.append('e')
    print(names)
    ['a', 'b', 'c', 'd', 'e']
    

      

    2、删除:pop,remove,del

    1)pop()

    如果没有指定下标,则默认会删除最后一个元素

    print(names.pop())   # e

    指定下标时,就会删除下标所对应的元素

    print(names.pop(2))  # c
    

     

    2)remove()

    >>> names.remove('e')
    >>> names
    ['a', 'b', 'c', 'd']
    

      

     3)del
    >>> del names[4]
    >>> names
    ['a', 'b', 'c', 'd']

     

    3、查找元素所在位置:index()

    >>> names.index('c')
    2
    

      

    4、统计元素的次数:count()

    >>> names.append('d')
    >>> names.count('d')
    2
    

      

    5、反转:reverse()

    list5 = [1,2,1,'c',1]
    # 反转的返回值为none
    list5.reverse()
    print(list5.reverse())# none
    print(list5) # [1, 'c', 1, 2, 1]
    

      

      

      

    6、清空:clear()

    >>> names.clear()
    >>> names
    []
    

      

    7、插入:insert()

    list7 = [1,2,1,'c',1]
    list7.insert(3,"888")  # 在索引为3的位置插入
    print(list7) # [1, 2, 1, '888', 'c', 1]
    

      

      

    还有其他的插入方法:

    >>> names[3] = 'lebron'
    >>> names
    ['a', 'b', 'devilf', 'lebron', 'd']
    

      

    8、排序:list.sort() 和sorted(list)

    # 升序
    
    # sort
    s2 = [2,1,9,3,2]
    s2.sort()
    print(s2) # [1, 2, 2, 3, 9]
    
    # sorted
    s3 = [2,1,9,3,2]
    # 调用sorted()方法。它返回一个新的list,新的list的元素基于小于运算符(__lt__)来排序
    s4 = sorted(s3)
    print(s4) # [1, 2, 2, 3, 9]
    print(s3) # [2, 1, 9, 3, 2]
    
    
    # 降序 参数reverse默认为False,升序  如果为True,则为降序
    s5 = [2,1,9,3,2]
    s5.sort(reverse=True) #
    print(s5) # [9, 3, 2, 2, 1]
    
    s6 = [2,1,9,3,2]
    s7 = sorted(s6,reverse=True)
    print(s7) # [9, 3, 2, 2, 1]
    

      

      

    9、列表拼接:extend()

    s8 = [1,3,5]
    print(id(s8)) # 2373059530376
    s9 = [2,4,6]
    
    # 调用extend()时不会改变列表的id 
    s8.extend(s9)
    print(s8,id(s8)) # [1, 3, 5, 2, 4, 6]  2373059530376
    

      

      

    10、列表切片

    1)列出所有的元素

    >>> names[::]
    ['&&', 'a', 'b', 'd', 'devilf', 'lebron', 'beijing', 'shandong', 'usa']
    

     

    2)列出最后一个元素,从中间位置开始,列出后面所有的元素

    >>> names[-1]
    'usa'
    

      

    >>> a = int(len(names)/2)
    >>> names[a:]
    ['devilf', 'lebron', 'beijing', 'shandong', 'usa'
    

      

    11、复制:copy()

    >>> names.copy()
    ['&&', 'a', 'b', 'd', 'devilf', 'lebron', 'beijing', 'shandong', 'usa']
    

      

    另外的几种复制的方法:

    import copy
    info = ['name',['a',100]]
    n1 = copy.copy(info)
    print(n1) # ['name', ['a', 100]]
    
    n2 = info[:]
    print(n2) # ['name', ['a', 100]]
    
    n3 = list(info)
    print(n3) # ['name', ['a', 100]]
    

      

    在使用copy.copy()时,需要导入copy模块

    这些均是浅copy

     

    import copy
    info = ['name',['a',100]]
    
    
    n1 = info[:]
    n2 = copy.copy(info)
    print(n1) # ['name', ['a', 100]]
    print(n2) # ['name', ['a', 100]]
    
    
    n1[0] = 'devilf'
    n2[0] = 'lebron'
    print(n1,n2)
    
    # ['devilf', ['a', 100]]
    # ['lebron', ['a', 100]]
    
    
    n1[1][1] = 80
    print(n1) # ['devilf', ['a', 80]]
    
    print(n2)  # ['lebron', ['a', 80]]
    

    这里可以看到修改n1列表中的值,n2中的值也会跟着改变,这就是浅copy,也就是说,浅copy会复制原列表的内存地址,

    也就是说,我们修改了n1和n2,就是修改了指向同一内存地址的对象,所以info列表会变化,n1和n2都会变化,例如:

    print(info)  # ['name', ['a', 80]]
    

      

     

    3 字典操作

    类型

    容器(集合):存放多个值的变量

    单列容器(系统中的单列容器很多):list | tuple

    双列容器(map):只有dict,存放数据 成对出现,dict存放数据采用 key-value键值对方式

     

    字典中的key可以为什么类型:key必须为不可变类型

    -- key是取value的唯一依据,key一旦被确定,就需要唯一确定(不能被改变)

     

    字典中的value可以为什么类型:value可以为任意类型

    -- value是用来存放世间所有存在的数据

    key要确保唯一性,不能重复,值可以重复,并且可以被改变 => 字典为可变类型

     

     字典常规操作

    1 增

    字典名["key"] = 值 => key已存在就是修改值,不存在就是新增值
    dic = {'a': 1, 'b': 2}
    dic['c'] = 3
    print(dic) # {'a': 1, 'b': 2, 'c': 3}

    2 改

    dic =  {'a': 1, 'b': 2, 'c': 3}
    dic['c'] = 30
    print(dic)   # {'a': 1, 'b': 2, 'c': 30}

    3 查:字典名[key]

    dic =  {'a': 1, 'b': 2, 'c': 30}
    
    print(dic['c'])  # 只能查找已有的key30
    
    #有默认值的查询:有key取出对应value,没有返还默认值,默认值可以自定义
    
    print(dic.get('d', 'http://www.baidu.com'))  # http://www.baidu.com
    

      

    4 删除

     清空  dict.clear()
    dic =  {'a': 1, 'b': 2, 'c': 30}
    dic.clear()
    print(dic)  # {}
    

     

    删除 pop()

    pop(k)删除指定key的value并返还删除的value

    dic = {'a': 1, 'b': 2, 'c': 30}
    print(dic.pop("c")) # 30

    从末尾删除  popitem()

    dic =  {'a': 1, 'b': 2, 'c': 30}
    res = dic.popitem()
    print(dic, res)   # {'a': 1, 'b': 2} ('c', 30)
    

      

     5 更新

    a有值覆盖,c没被新操作,带下来,b为新增,增加并赋值

    dic = {'a': 1, 'c': 2}
    d = {'a': 10, 'b': 20}
    dic.update(d)
    print(dic)  # {'a': 10, 'c': 2, 'b': 20}
    

      

    带默认值的新增: 新增key,key已有,啥事不干,没有添加key,值就是第二个参数

    dic.setdefault('z', 100)
    print(dic)  #  {'a': 10, 'c': 2, 'b': 20, 'z': 100}
     

     6 字典的循环

    1.直接循环,就是循环得到key

     
    dic = {'a': 1, 'c': 2}
    
    for k in dic:
        print(k)  # a c 
    

      

    2.循环keys(效果和1 一致)

    print(dic.keys())
    
    for k in dic.keys():
    
        print(k)  # a c
    

    3.循环values

    print(dic.values())
    
    for k in dic.values():
    
        print(k)
    
    '''
    dict_values([1, 2])
    1
    2
    '''

      

    同时循环key和value (key, value)

    dic = {'a': 1, 'c': 2}
    print(dic.items())
    
    a, b = (1, 2)
    
    print(a, b)
    
    for res in dic.items():
    
        print(res)
    
    '''
    dict_items([('a', 3), ('c', 2)])
    1 2
    ('a', 3)
    ('c', 2)
    '''
    

      

     7 重点解压赋值

    dic = {'a': 3, 'c': 2}
    for k, v in dic.items():
      print(k,v)  #  a 3 c 2 
    

      

      

     4 元组(tuple)操作

    元组:可以理解为不可变的列表

    # 1.值可以为任意类型
    
    # 2.可以存放多个值 - 可以进行成员运算
    
    # 3.可以存放重复的值 - 可以计算成员出现的次数
    
    # 4.有序存储 - 可以通过索引取值,可以切片
    

      

    t1 = ('physics', 'chemistry', 1997, 2000)
    t2 = (1, 2, 3, 4, 5, 6, 7 )
    

    1  索引取值 

    print(t1[1], type(t1[1]))
    print(t1[-3])
    # chemistry <class 'str'>
    # chemistry

    2 运算拼接

    print((1, 2) + (2, 3))
    
    # (1, 2, 2, 3)

    3.长度

    print(len(t1)) 

    4 切片

    print((2, 1, 3)[::-1])   # (3, 1, 2)
    

    5 成员运算 

    print(True in t1)  # 
    print(False in t1)  # False == 0, t1中如果有0或False,该结果都是True
    

    6 循环 

    for obj in t1:
        print(obj, end=" ")  # physics chemistry 1997 2000 
    

    7 计数

    print(t1.count(0))  # 对象0在元组中出现的次数
     
    print(t1.index(123, 4, len(t1))) # 对象0在区间4~末尾第一次出现的索引
    

      

    5 集合(set)操作

    # 概念:
    # 1.set为可变类型 - 可增可删
    # 2.set为去重存储 - set中不能存放重复数据
    # 3.set为无序存储 - 不能索引取值
    # 4.set为单列容器 - 没有取值的key
    # 总结:set不能取值
    

      

     增
    s = set()
    
    s.add('1')
    s.add('2')
    s.add('1')
    print(s)  #  {'2', '1'} 去重 数字会乱序排列
    s.update({'2', '3'})
    print(s) # {'3', '1', '2'}
    

    c1 = {3,1,2,6,-1,"c"}
    c2 = c1.pop()
    print(c2) # 0 # 有0默认删除0  没有 默认删除1 依次2 ...
    

      

      

    s = {3,1,2}
    s.remove(1)
    print(s)  # {2,3}
    

     

    s = {3,1,2}
    s.clear()
    print(s)  # set()
    

      

    set运算

    # 交集:两个都有 &
    py = {'a', 'b', 'c', 'egon'}
    lx = {'x', 'y', 'z', 'egon'}
    print(py & lx)
    print(py.intersection(lx))
    # 合集:两个的合体 |
    print(py | lx)
    print(py.union(lx))
    # 对称交集:抛出共有的办法的合体 ^
    print(py ^ lx)
    print(py.symmetric_difference(lx))
    # 差集:独有的
    print(py - lx)
    print(py.difference(lx))
    # 比较:前提一定是包含关系
    s1 = {'1', '2'}
    s2 = {'2'}
    print(s1 < s2)
    

      

  • 相关阅读:
    Newtonsoft.Json.SerializeObject 转换参数
    EntityFramework Code First 特性
    删除SVN
    C# 数据库连接字符串
    javascript 计算后 无聊的小数点处理
    python index 自己实现
    springcloud 网关过滤器Zuul Filter
    Spring Cloud Feign服务通信与负载均衡机制
    Spring Cloid Ribbon服务的通信与负载均衡搭建
    spring-cloud注册中心集群
  • 原文地址:https://www.cnblogs.com/wakee/p/10739402.html
Copyright © 2011-2022 走看看