• day02_雷神_字符串、列表、字典


    1.字符串

    1.1 字符串相加

    s1 = "	ale  x  "
    s2 = "   sb   "
    print(s1 + s2)   #识别空格
    print(s1.strip() + s2.strip())
    
    	ale  x sb   
    ale  xsb
    

    1.2 字符串相乘

    s1 = "alex  "
    print(s1 * 5)
    
    alex  alex  alex  alex  alex  
    
    note:str*int
    

    1.3 字符串索引、切片

    字符串索引,从0开始,空格也会输出

    s = "chun tian lai le "
    print(s[0],type(s[0]))
    print(s[4],type(s[4])) 
    print(s[-1],s[-2])   -1是最后一个元素
    

    字符串切片[起始索引:结束索引+1:步长],顾首不顾尾,所以结束索引+1

    s = "chuntianlaile"
    print(s[::2])
    print(s[::-1])
    
    cutalie
    elialnaitnuhc
    

    1.4 字符串常用方法

    1.4.1 **capitalize 首字母大写其余字母小写

    s = 'alexWUsir'
    s1 = s.capitalize()
    print(s1)
    
    Alexwusir
    

    1.4.2 **swapcase 大小写翻转

    s = 'alexWUsir'
    s2 = s.swapcase()
    print(s2)
    
    ALEXwuSIR
    

    1.4.3 *title 非字母隔开的每个单词的首字母大写

    s = 'alex wusir*taibai2ritian'
    s3 = s.title()
    print(s3)
    
    Alex Wusir*Taibai2Ritian
    

    1.4.4 **center 设置总长度,并居中

    s = 'alex wusir*taibai2ritian'
    s4 = s.center(30,)
    s4 = s.center(50,'*')
    print(s4)
    
    *************alex wusir*taibai2ritian*************
    

    1.4.5 *** upper() lower() 全部大写、全部小写

    验证码忽略大小写
    code = 'AwEqr'
    username= input('请输入用户名:')
    your_code = input('请输入验证码:')
    if username == 'alex' and your_code.upper() == code.upper():
    	print('验证成功')
    

    1.4.6 ***startswith endswith

    s = 'alexWUsir'
    s6 = s.startswith('a')
    print(s6)
    True
    
    s7 = s.startswith('alex')
    True
    
    s8 = s.startswith('WU', 4,)  选择索引位置开始
    True  
    

    1.4.7*** strip()、lstrip(),rstrip() 默认去除字符串前后的空格,换行符,制表符;去除的元素可自定制。

    ss = 'abclaonanhaiq'
    ss1 = ss.strip('abqc')
    print(ss1)
    
    laonanhai  首尾都删除,没有匹配到abqc中的任何一个,就停止。
    
    username = input('>>>').strip()
    password = input('>>>').strip()
    if username == '老男孩' and password == '123':
    	print('登录成功')
    

    1.4.8*** replace

    s = 'alex 分甘共苦老地方 alex 风刀霜剑卡乐芙'
    s8 = s.replace('alex', 'SB')
    s9 = s.replace('alex', 'SB',1)  1是次数,替换一次。2 就是两个alex都替换了。
    print(s9)
    
    SB 分甘共苦老地方 alex 风刀霜剑卡乐芙
    

    1.4.9 ***split() 分隔 str ---> list

    s = "   www.cctv.com,www.cntv.com,www.news.cn   	"
    s1 = s.strip().split(',')  
    print(s1)
    
    ['www.cctv.com', 'www.cntv.com', 'www.news.cn']
    
    l1 = s1.split()  默认以空格分隔
    s1 = s.strip().split(',',1) 数字是分割次数,分割1次
    

    1.4.10***join list---> str

    li = ['www.cctv.com', 'www.cntv.com','www.news.cn']
    a = '...  '.join(li)
    print(a)
    
    www.cctv.com...  www.cntv.com...  www.news.cn
    

    1.4.11***find index 通过元素找索引

    find找不到会返回-1
    index找不到会报错
    
    s = 'alexwausir'
    s11 = s.find('ex')
    2
    
    s = "123456789123456789123456789"
    a = s.find("9",1,10)
    print(a)  查找索引1开始到10之间的第一个出现的字符串9,后边重复的不算。
    

    1.4.12***format

    第一种用法

    s = "我叫{},今年{},爱好{}"
    s12 = s.format('太白', '25', '女')
    print(s12)
    

    第二种用法

    s1 = "我叫{0},今年{1},爱好{2},我依然叫{0}"
    s13 = s1.format('太白', '25', '女')
    print(s13)  复用
    

    第三种用法

    s3 = "我叫{name},今年{age},爱好{hobby}"
    s14 = s3.format(age=25,hobby='girl',name='太白')
    print(s14)  乱序
    

    公共方法

    s = "aabbccdd"
    print(len(s))  长度
    print(s.count("a"))  元素“a”出现的次数
    
    8
    2
    

    is系列

    name = '123'
    print(name.isalnum()) #字符串由字母或数字组成
    print(name.isalpha()) #字符串只由字母组成
    print(name.isdigit()) #字符串只由数字组成
    
    True
    False
    True
    

    int、str、bool转换

    int --> str

    s = 123
    print(s,type(s))
    s1 = str(s) 或者s1 = str(123)
    print(s1,type(s1))
    

    str --> int

    s = "123"
    print(s,type(s))
    s1 = int(s)
    print(s1,type(s1))
    

    int --> bool

    0是False,非0是True
    

    bool --> int

    True是1,False是0
    

    str--> bool

    空是False,非空是True,空格也是True
    

    str ---> list

    split
    

    list --> str

    join
    

    格式化输出

    利用三引号,实现表格形式

    print("""
    	欢迎登陆{}
    	{}{}{}
    	{} {} {}
    """.format("1","2","3","4","2","3","4"))
    

    and or not

    1,前后都是比较运算

    优先级:() > not > and > or
    print(1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8)
    

    2,前后都是数字

    0 是False  非0 都是True
    

    2 列表

    2.1 取值

    2.1.1 按照索引取值

    按照索引取值,取出来的元素保持其原有的任何属性(与元素本身的数据类型一致)

    2.1.2 按照切片取值

    按照切片取值,取出来的是小列表

    li = ["alex", "wusie","hou","22","33"]
    l1 = li[::2]
    print(l1)
    
    ['alex', 'hou', '33']
    

    2.2 增

    append() 最后追加

    l = ['WuSir', 'alex', 'OldBoy', 'barry']
    l.append([1, 2, 3])
    print(l)
    
    ['WuSir', 'alex', 'OldBoy', 'barry', [1, 2, 3]]
    

    insert 根据索引插入

    l = ['WuSir', 'alex', 'OldBoy', 'barry']
    l.insert(1, '葫芦')
    print(l)
    
    ['WuSir', '葫芦', 'alex', 'OldBoy', 'barry
    

    extend 将可迭代对象按最小元素添加

    l.extend([1, '2122', 56])
    print(l)
    
    ['WuSir', 'alex', 'OldBoy', 'barry', 1, '2122', 56]
    

    2.3 删

    pop 按照索引删除

    l = ['WuSir', 'alex', 'OldBoy', 'barry']
    print(l.pop(0))
    print(l)
    
    WuSir  pop有返回值
    ['alex', 'OldBoy', 'barry']  
    

    remove 按照元素删除

    l = ['WuSir', 'alex', 'OldBoy', 'barry']
    l.remove("alex")
    print(l)
    

    clear 清空列表

    l.clear()
    print(l)
    

    del 删除列表;按照索引删除,按照切片删除

    del l
    print(l)
    
    del l[1]
    print(l)
    
    del l[:3]
    print(l)
    
    l = [11, 22, 33, 44, 55]
    del l[1::2]
    print(l)
    
    [11, 33, 55]
    

    2.4 改

    按照索引改

    l = ['WuSir', 'alex', 'OldBoy', 'barry']
    l[0] = "houbinglei"
    print(l)
    

    按照切片去改,改的是那一片区域,有点类似extend,将新的最小元素插入。理解最小元素。

    l = ['WuSir', 'alex', 'OldBoy', 'barry']
    l[:2] = ["01","02","123",456,[123,456]]
    print(l)
    
    ['01', '02', '123', 456, [123, 456], 'OldBoy', 'barry']
    

    2.5 查

    按照索引、切片、切片+不长查

    for 循环遍历查

     for i in l:
     	print(i)
    

    2.6 列表其他方法

    print(len(l))  总个数
    
    print(l.count('WuSir'))   某个元素出现的次数
    
    l1 = [1, 9, 8, 4, 3, 2, 6,]
    l1.sort()   正序排序
    print(l1)
    
    l1.sort(reverse=True)  #倒叙排序
    print(l1)
    
    l1.reverse()   翻转
    print(l1)
    

    2.7 列表的嵌套

    l1 = [1, 2, 'alex', ['WuSir', 'taibai', 99], 6]
    l1[-2][0] = l1[-2][0].upper()
    l1[-2][-1] = str(l1[-2][-1] + 1)
    print(l1)
    
    [1, 2, 'alex', ['WUSIR', 'taibai', '100'], 6]
    

    2.8 元组(tuple)和range

    元祖。只读的列表

    tu1 = (1, 2, [1, 3,], 4)
    tu1[2].append(666)
    print(tu1)
    
    只是不能修改元祖的最小元素。
    tu = (1, 2, 33, 'alex')
    print(tu[:-1])
    
    (1, 2, 33)  -1是不能取到alex,切片不顾尾
    

    range,一种数字组成的特殊列表

    for i in range(1,10,2):
    	print(i)
    
    默认从0开始,不顾尾,2是步长
    

    列表增删改查,3424

    3 字典

    3.1 增

    根据key增加

    dic['hobby'] = 'old_girl'   无责增加,有责修改。
    dic['name'] = 'alex'
    print(dic)
    

    setdefault()方法增加

    默认没有添加,有的话不修改,默认值是None
    dic = {
        'name': '老男孩',
        'age': 10000,
        'sex': '男',
    }
    
    dic.setdefault("love",)
    print(dic)
    
    dic.setdefault('high', 169)
    print(dic)
    
    {'name': '老男孩', 'age': 10000, 'sex': '男', 'love': None}
    {'name': '老男孩', 'age': 10000, 'sex': '男', 'love': None, 'high': 169}
    

    3.2 删

    pop 根据key删除

    dic = {
    'name': '老男孩',
    'age': 10000,
    'sex': '男',
    }
    print(dic.pop("name1",'没有这个键'))
    print(dic.pop("name"))
    print(dic)
    
    dic = {
    'name': '老男孩',
    'age': 10000,
    'sex': '男',
    }
    print(dic.pop("name1",'没有这个键'))  可以设定返回值
    print(dic.pop("name"))
    print(dic)
    

    popitem() 3.6 之前是随机删除

    clear

    dic.clear()
    print(dic)
    

    del 删除整个字典; 按照键去删除键值对

    del dic
    print(dic)
    del dic['name']
    print(dic)
    

    3.3 改

    根据键改

    update()方法

    dic = {
        'name': '老男孩',
        'age': 10000,
        'sex': '男',
    }
    dic1 = {}
    print(dic1)
    dic1.update(dic)
    print(dic1)
    
    {}
    {'name': '老男孩', 'age': 10000, 'sex': '男'}
    

    3.4 查

    根据key查,没有会报错

    根据get()方法

    dic = {
        'name': '老男孩',
        'age': 10000,
        'sex': '男',
    }
    dic1 = {}
    print(dic["name"])
    print(dic.get("name1","meiyou"))
    
    老男孩
    meiyou  不设置,默认返回None,不报错
    

    for 循环 三种

    dic = {
        'name': '老男孩',
        'age': 10000,
        'sex': '男',
    }
    for k in dic.keys():
    	print(k)
    
    name
    age
    sex
    
    	分别赋值原理:
    a, b = 1 ,3
    a, b = [22, 33]
    print(a,b)
    for k, v in dic.items():
        print(k, v)
    

    补充:

    循环列表、字典是最好不要改变其本身得结构,比如删除操作;

    fromkeys()方法,创建一个新得字典

    seq = ('name', 'age', 'sex')
    
    dict = dict.fromkeys(seq)
    print "New Dictionary : %s" %  str(dict)
    
    dict = dict.fromkeys(seq, 10)
    print "New Dictionary : %s" %  str(dict)
    
    New Dictionary : {'age': None, 'name': None, 'sex': None}
    New Dictionary : {'age': 10, 'name': 10, 'sex': 10}  每个值都是10
    My name is 侯冰雷 ~~欢迎转载 ~~欢迎关注 ~~欢迎留言
  • 相关阅读:
    MySQL读写分离技术
    MySQL主从复制与主主复制
    搭建MySQL高可用负载均衡集群
    CentOS7安装openjdk、tomcat和mysql流程介绍
    windows下 安装 rabbitMQ 及操作常用命令
    Python Twisted、Reactor
    数据结构(DataStructure)与算法(Algorithm)、STL应用
    RCE via XStream object deserialization && SECURITY-247 / CVE-2016-0792 XML reconstruction Object Code Inject
    IRC(Internet Relay Chat Protocol) Protocal Learning && IRC Bot
    phpcms /api/phpsso.php SQL Injection Vul
  • 原文地址:https://www.cnblogs.com/houbinglei/p/9268709.html
Copyright © 2020-2023  润新知