zoukankan      html  css  js  c++  java
  • python基础知识-04-字符串列表元组

    python其他知识目录

    内存,cpu,硬盘,
    解释器 实时翻译 编译器 :一次性翻译
    python2,3 除法,2不能得小数,3能得小数

    1、字符串操作


    1.1字符串操作startswith

    startswith #判断是否以什么开头
    name="mcw"
    name_new=name.startswith("m")
    print(name_new)
    -------结果:
    True

    name="mcw"
    name_new=bool(name[0]=="m")
    print(name_new)
    --------结果:
    True

    1.2字符串操作endswith

    endswith #判断是否以什么结尾

    name="mcw"
    name_new=name.endswith("m")
    print(name_new)
    -------结果:
    False

    1.3字符串操作format

    format() #格式化输出 %s可替代

    网络传输gbk,不用Unicode。

    1.4字符串操作encode

    参考:https://blog.csdn.net/m0_38080253/article/details/78841280

    encode #改变编码类型 ,网络传输和存储可以用到

    name="mcw"
    name_new=name.encode()
    print(name_new)
    --------结果:
    b'mcw'

    mcw="魔降风云变"
    mcw_utf8 = mcw.encode("utf-8")
    mcw_gbk = mcw.encode("gbk")
    mcw_gb2312 = mcw.encode("gb2312")
    print(mcw)
    print("utf-8编码: ", mcw_utf8)
    print("gbk 编码: ", mcw_gbk)
    print("gb2312编码: ", mcw_gb2312)
    print("utf-8 解码: ", mcw_utf8.decode('utf-8'))
    print("gbk 解码: ", mcw_gbk.decode('gbk'))
    print("gb2312 解码: ", mcw_gb2312.decode('gb2312'))
    -----------结果:

    魔降风云变
    utf-8编码: b'xe9xadx94xe9x99x8dxe9xa3x8exe4xbax91xe5x8fx98'
    gbk 编码: b'xc4xa7xbdxb5xb7xe7xd4xc6xb1xe4'
    gb2312编码: b'xc4xa7xbdxb5xb7xe7xd4xc6xb1xe4'
    utf-8 解码: 魔降风云变
    gbk 解码: 魔降风云变
    gb2312 解码: 魔降风云变

    错误之一:UnicodeDecodeError: 'gb2312' codec can't decode byte 0x94 in position 2: illegal multibyte sequence

    原因:编码解码方式不一致

    mcw="魔降风云变"
    mcw_utf8 = mcw.encode("utf-8")
    print("gb2312 解码: ", mcw_utf8.decode('gb2312'))

    1.5、字符串操作join指定分隔符给字符串,列表,元组,因为内部会给它for 循环

    join "_".join(name)#循环单个字符并添加分隔符,包括添加空格

    name="mcw"
    name_new="_".join(name)
    print(name_new)
    --------结果:
    m_c_w

    列表元组元素拼接,"".join(列表或元组)
    li=["mcw","xiaoma","wl"]
    mcw="_".join(li)
    print(mcw)
    ---------结果:
    mcw_xiaoma_wl

    
    

    tup=("mcw","xiaoma","wl")
    mcw="_".join(tup)
    print(mcw)
    ------------结果:
    mcw_xiaoma_wl

    # ------------------join里边传的必须是字符串,否则报错---------
    nums=[11,22,33,44]
    num="".join(nums)
    print(num)
    -------结果:
    TypeError: sequence item 0: expected str instance, int found

    解决办法:

    nums=[11,22,33,44]
    for i in range(0,len(nums)):
    nums[i]=str(nums[i])
    num="+".join(nums)
    print(num)

    -----------结果:
    11+22+33+44

    1.6、字符串反转操作以及实现正反序列的列表元素生成(延伸方法:五种方法实现字符串反转 name = "我叫小马过河博客是魔降风云变")

    步长,可正可负,切片。[-1:0:-1]
    请将字符串反转:name[::-1]

    name="mcwlllsf"
    print(name[::-1])
    #fslllwcm
    name="mcwlllsf"
    print(name[-1::-1])
    #fslllwcm

    请用五种方法实现字符串反转 name = "我叫小马过河博客是魔降风云变"(步长、while、for)
    #既然字符串可以反转,那么字典,元组,列表怎么反转呢,思考一下

                                        #方法一---------------------
    name = "我叫小马过河博客是魔降风云变"     
    print(name[::-1])
    ----------以下结果都为:
    变云风降魔是客博河过马小叫我
                                       #方法二---------------------
    name = "我叫小马过河博客是魔降风云变"      
    index=0
    e_str=""                         #什么情况定义空字符串,或是列表,元组,字典
    while index<len(name):
        index += 1
        e_str+=name[len(name)-index]
    print(e_str)
                                     #方法三-------------------思路:倒着取出每个字符并拼接成字符串
    name = "我叫小马过河博客是魔降风云变"      
    e_str=""
    for index in range(0,len(name)):
        e_str+=name[len(name)-index-1]
    print(e_str)
                                        #方法四------------------
    name = "我叫小马过河博客是魔降风云变"    
    e_str=""
    for index in range(len(name)-1,-1,-1):     #因为字符串索引最大值是字符串长度-1,range()取
    
    左值,所以起始值为len()-1
        e_str+=name[index]
    print(e_str)
                                      #方法五-----------------#索引最大,倒着数
    name = "我叫小马过河博客是魔降风云变"   
    index=len(name)
    e_str=""
    while index>0:
        index-=1
        e_str+=name[index]
    print(e_str)

    实现正反序列的列表元素生成

    正向序列:
    li=[]
    for i in range(0,3):
        li.append(i)
    print(li)
    ---------结果:
    [0, 1, 2]
    
    反向序列
    li=[]
    for i in range(0,3):
        li.insert(0,i)
    print(li)
    -----------结果:
    [2, 1, 0]

    1.7、字符串一个切片操作案例

    name="56+78"
    a=name.split("+")          #指定分隔符
    print(a,a[0],a[-1],a[1])   
    ['56', '78'] 56 78 78

     

    1.8、字符串extend的操作

    # 列表extend元组,列表
                               #列表.extend(元组)-------------
    li=["mcw","xiaoma","wl"]
    tup=("y","h","feng")
    li.extend(tup)
    print(li)
    -----------结果:
    ['mcw', 'xiaoma', 'wl', 'y', 'h', 'feng']
                            #列表.extend(字符串)-------------                      
    li=["mcw","xiaoma","wl"]
    mcw_str="yh"
    li.extend(mcw_str)
    print(li)
    ------------结果:
    ['mcw', 'xiaoma', 'wl', 'y', 'h']
                            #列表.extend(列表)---------------
    li=["mcw","xiaoma","wl"]
    li2=["xiaoming","xiaoxiao"]
    li.extend(li2)
    print(li)
    -------------------结果:
    ['mcw', 'xiaoma', 'wl', 'xiaoming', 'xiaoxiao']
                             #列表=列表+列表 多个列表元素合并
    li=["mcw","xiaoma","wl"]
    li2=["xiaoming"]
    li=li+li2
    print(li)
    ---------------结果:
    ['mcw', 'xiaoma', 'wl', 'xiaoming']
                            #列表.extend(字典),默认将键加到列表后面。想加入其他,列表.extend(字典.keys/items/values)
    li=["mcw","xiaoma","wl"]
    dic={"name":"mcw","age":18}
    li.extend(dic)
    print(li)
    -------------结果:
    ['mcw', 'xiaoma', 'wl', 'name', 'age']

    2、#for循环打印字符串单个字符,for有限循环(while死循环)

    name="mcwh"
    for i in name:
    print(i)
    print(i) #因为最后一个被赋值h
    --------结果:
    m
    c
    w
    h
    h

    #for中continue,break

    3、range()

    3.1range(0,3)取值范围:[0,3)

    for i in range(0,3):
    print(i)
    -----结果:
    0
    1
    2
    
    for i in range(3):       #取值范围从0到3,不取3
    print(i)
    ------结果:
    0
    1
    2

    for i in range(0,3):     
    print(2-i) #使用range倒着来。(3-1)-i
    -----------结果:

    2
    1
    0

    for i in range(0,5,2): #[0,1,2,3,4],取步长为2进行操作
    print(i)
    --------结果:
    0
    2
    4

    =======================shel序列号 =================

    [root@xiaoma ~]# seq 3
    1
    2
    3
    [root@xiaoma ~]# seq 0 2
    0
    1
    2
    [root@xiaoma ~]# seq 0 2 5    #0-5,步长为2
    0
    2
    4

    3.2、range的一个使用案例(打印0-5之间的偶数)

    for i in range(0,5,2):               #方法一
        print(i)
    
    for i in range(0,5):                 #方法二
        if i%2==0:
            print(i)
    ------------结果:
    0
    2
    4

    #4、for循环1-10,不打印7

    for i in range(1,11):
    if i==7:                    #注解:for循环多少次结合range(),不打印7就是等于7就跳过
    continue
    print(i)

    #重点,数据类型中的字符串
    #for 循环

    5、列表操作

    mcw=list()                  #定义空列表,空列表布尔值为False
    xiaoma=[]
    print(mcw,bool(mcw),xiaoma)
    ---------------结果:
    [] False []

    5.1len

    users=["mcw","yh",99]
    val=len(users)
    print(val)
    ------结果:
    3

    5.2索引和切片,步长(切片是一段字符)(查1)

    users=["mcw","yh",99]
    print(users[0],users[-1])
    print(users[0:3])
    print(users[::-1])
    -----结果:
    mcw 99
    ['mcw', 'yh', 99]
    [99, 'yh', 'mcw']

    5.3#输入数字+数字,实现求和

    方法一
    content=input("请输入:")
    index=0
    total=0
    while True:
        char = content[index]
        if char.isdigit():
            total+=int(char)
        index+=1
        if index==len(content):
            break
    print(total)
    自我注解:
    方法二:spilit
    content=input("请输入数字+数字:")
    sum=int(content.split("+")[0])+int(content.split("+")[1])
    print(sum)
    ----------结果:

    请输入数字+数字:16+4
    20

     

    5.4#for循环遍历列表(查2)

    users=["mcw","yh",99]
    for i in users:
        print(i)
    -----结果:
    mcw
    yh
    99
    
    users=["mcw","yh","99"]
    for i in users:
        for j in i:
            print(j)
    ----结果:
    m
    c
    w
    y
    h
    9
    9
    如果99是数字,出现报错

    #自我注解:对多个事物做相同的操作,就用for循环,假如其中某个不做这个操作,用判断将它剔除

    5.5#实现列表元素打印并加序号(查3)

    #for循环列表加个计数的

    方法一:
    users=["mcw","yh","99"]
    for i in range(0,len(users)):
        print(i,users[i])
    -----结果:
    0 mcw
    1 yh
    2 99
    方法二:
    users=["mcw","yh","99"]
    count=0
    for i in users:
        print(count,i)
        count+=1
    ------结果:
    0 mcw
    1 yh
    2 99

    列表独有功能

    5.6#列表追加元素(增1)

    users=[]
    while True:
        name = input("请输入姓名:")
        users.append(name)
    ------效果:
    请输入姓名:mcw
    ['mcw']
    请输入姓名:yh
    ['mcw', 'yh']
    请输入姓名:xiaoma
    ['mcw', 'yh', 'xiaoma']
    
    users=[]
    for i in range(0,3):
        name=input("请输入用户名和密码,逗号隔开:")
        users.append(name)
    print(users)
    -------结果:
    请输入用户名和密码,逗号隔开:mcw,123
    请输入用户名和密码,逗号隔开:yh,456
    请输入用户名和密码,逗号隔开:xiaoma,789
    ['mcw,123', 'yh,456', 'xiaoma,789']
        print(users)

    5.7#录入用户名和密码并校验

    users=["mcw,123","xiaoma,456","xiaoxiao,789"]
    denglu = input("请输入用户名进行登录:")
    dpasswd = input("请输入密码:")
    for val in users:
        if denglu==val.split(",")[0] and dpasswd==val.split(",")[1]:
            print("登录成功")
    --------------结果:
    请输入用户名进行登录:mcw
    请输入密码:123
    登录成功

    5.8#列表插入(增2)

    users=["mcw","yh","99"]
    users.insert(1,"xiaoma")
    print(users)
    -------结果:
    ['mcw', 'xiaoma', 'yh', '99']

    5.9#列表元素移除:(删)

    **remove移除元素

    users=["mcw","yh","99"]
    users.remove("yh")
    print(users)
    -------结果:
    ['mcw', '99']

    **pop移除接索引

    users=["mcw","yh","99"]
    users.pop(1)
    print(users)
    -----结果:
    ['mcw', '99']
    
    users=["mcw","yh","99"] 
    users.pop() #pop默认从后面删除
    print(users)
    -----结果:
    ['mcw', 'yh']
    
    users=["mcw","yh","99"]
    users.clear()                  #clear清空列表
    print(users)
    ----结果:
    []

    **del

    users=["mcw","yh","99"]
    del users[1]
    print(users)
    ------结果:
    ['mcw', '99']

    5.10修改列表元素,以及元素内部元素(改)

    注意点,字符串本身不能修改或删除,字符串是不可变类型,列表是可变类型。

    users=["mcw","yh","99"]
    users[0]="xiaoma"
    print(users)
    --------结果:
    ['xiaoma', 'yh', '99']
    
    users=["mcw","yh","99"]
    print(users[0][1]) #定位user[0]元素的第二个字符。
    ------结果:
    c

    5.11、列表操作expend(增3)

    li=["xiao"]
    s="mcw"
    li.extend(s)
    print(li)
    ------------结果:
    ['xiao', 'm', 'c', 'w']
    
    li=["xiao"]
    s="mcw"
    li=li+" ".join(s).split()
    print(li)
    ---------------结果
    ['xiao', 'm', 'c', 'w']

     5.12、#将列表后面的值移到前面,pop删除的元素可用变量接收(删,增)

    deleted=li.pop
    li.append(deleted)
    
    li=["mcw","xiaoma","wl"]
    deleted=li.pop()
    li.insert(0,deleted)
    print(li)
    ---------结果:
    ['wl', 'mcw', 'xiaoma']
    
    #增加: del 仅仅是删除,pop还能将删除后的赋予给一个变量

     5.13、同样列表元素数量相同的变量在等号左边接收右边列表才没有问题

    mcw=["mcw","xiaoma"]
    a,b=mcw
    print(a)
    print(b)
    --------------------结果:
    mcw
    xiaoma

    5.14、reverse 列表元素反转

    li=["mcw","xiaoma","xiaoxiao"]
    li.reverse()
    print(li)
    ----------结果:
    ['xiaoxiao', 'xiaoma', 'mcw']

    5.15、sort列表元素排序,默认从小到大

    sort 列表 默认从小到大
    li=[2,5,1,6]
    li.sort()
    print(li)
    ------------结果:
    [1, 2, 5, 6]
    
    sort(reverse=Ture)  从大到小
    li=[2,5,1,6]
    li.sort(reverse=True)
    print(li)
    -----------结果:
    [6, 5, 2, 1]

    5.16#总结:

    列表元素操作
    增: append / insert
    删: remove / pop / clear / del users[2]
    改: users[3] = "新值"
    查: 索引/切片
    列表嵌套:

    users=["mcw",["xiaoming","xiaohong"],"99"]
    print(users[1][1][4:])
    -------结果:
    hong

    6、元组的书写规范

    users=[11,"mcw","xiaoma"] #列表,可变类型
    users=(11,"mcw","xiaoma") #元组,不可变类型
    拥有公共功能:
    索引 (排除)
    切片
    步长
    删除
    修改
    for循环
    len
    。。。。

    6.1元组操作

    users=("mcw","xiaoma","mojiangfengyunbian")
    print(users[1],users[1:])
    print(users[-1][::2])
    print(len(users),len(users[-1]))
    -----结果:
    xiaoma ('xiaoma', 'mojiangfengyunbian')
    mjageguba
    3 18

    6.2#特殊:元组中的元素不可被修改/删除

    users=("mcw","xiaoma","mojiangfengyunbian")
    users[0]="ff"
    print(users)
    --------结果:
    TypeError: 'tuple' object does not support item assignment
    # 示例一:
    v1 = (11,22,33)
    v1[1] = 999 # 错误
    v1 = 999 # 正确
    # 示例二:可以嵌套
    v1 = (11,22,33,(44,55,66),(11,2,(99,88,),3))
    # 示例三:嵌套
    v2 = [11,22,33,(11,22,33)]
    v2[-1][1] = 99 # 错误
    v2[-1] = 123 # 正确
    # 示例四:嵌套
    v3 = (11,[1,2,3],22,33)
    v3[1] = 666 # 错误
    v3[1][2] = 123

    #自我注解:可以修改的用列表,不可以修改的用元组,部分可以修改部分不可以修改的用元组和列表相
    互嵌套

    ------
    -------------

    7、git相关使用

    问题:
    #开发流程:
    1、写出你常用的git命令
    2、你们公司是怎么用git做开发的
      1)在码云或GitHub等代码托管的网站上创建自己的仓库。创建完之后码云会给我们一个仓库地址。
      2)在本地自己写代码
      3)将代码提交到远程仓库。
        -初始化
        -进入任意文件夹,
        -git init
        -git config 邮箱
        -git config 姓名
        -git remote add origin 仓库域名 #origin,给远程仓库域名起别名origin。
        注意:至此,git已经将目录管理起来了,以后目录内文件有任意变化,git都能识别出来
      -代码收集并提交
        -git status #可以查看修改记录
        -git add .
        -git commit -m "注释"
        -git push origin master #将本地仓库的代码同步到远程仓库
      -在本地修改代码或删除文件等
        -git add .
        -git commit -m "注释"
        -git push origin master #将本地仓库的代码同步到远程仓库
      -[避免]如果远程仓库有本地没有的代码,必须先执行[可能引发合并的问题]
        -git pull origin master
        -git status #可以查看修改记录
        -git add .
        -git commit -m "注释"
        -git push origin master #将本地仓库的代码同步到远程仓库


    ------

  • 相关阅读:
    Leetcode Plus One
    Leetcode Swap Nodes in Pairs
    Leetcode Remove Nth Node From End of List
    leetcode Remove Duplicates from Sorted Array
    leetcode Remove Element
    leetcode Container With Most Water
    leetcode String to Integer (atoi)
    leetcode Palindrome Number
    leetcode Roman to Integer
    leetcode ZigZag Conversion
  • 原文地址:https://www.cnblogs.com/machangwei-8/p/10636141.html
Copyright © 2011-2022 走看看