• 3-【python13_day2】


    本节内容

    1. 列表、元组操作
    2. 字符串操作
    3. 字典操作
    4. 集合操作
    5. 文件操作
    6. 字符编码与转码

    一,列表操作

    示例列表:

    names = ['wuzb',"Tenglan",'Eric']
    

    1,下标取值

    下标从0开始,第n个值的下标是n-1。
    可以倒着取值,比如:name[-1]

    >>> names[0]
    'wuzb'
    >>> names[2]
    'Eric'
    >>> names[-1]
    'Eric'
    >>> names[-2] #还可以倒着取
    'Tenglan'
    

    2,切片

    下标切片,取头舍尾。比如name[1:8],只会取下标是1-7的值。
    如果从头开始可以不用写下标: name[:6]
    如果想要取到最后一个可以:name[2:]
    还可以隔几个取值:name[2::2]
    表示:每隔2个值取一个值,下标从2开始到结束

    >>> names = ["Wuzb","Tenglan","Eric","Rain","Tom","Amy"]
    >>> names[1:4]  #取下标1至下标4之间的数字,包括1,不包括4
    ['Tenglan', 'Eric', 'Rain']
    >>> names[1:-1] #取下标1至-1的值,不包括-1
    ['Tenglan', 'Eric', 'Rain', 'Tom']
    >>> names[0:3]
    ['Alex', 'Tenglan', 'Eric']
    >>> names[:3] #如果是从头开始取,0可以忽略,跟上句效果一样
    ['Alex', 'Tenglan', 'Eric']
    >>> names[3:] #如果想取最后一个,必须不能写-1,只能这么写
    ['Rain', 'Tom', 'Amy']
    >>> names[3:-1] #这样-1就不会被包含了
    ['Rain', 'Tom']
    >>> names[0::2] #后面的2是代表,每隔一个元素,就取一个
    ['Alex', 'Eric', 'Tom']
    >>> names[::2] #和上句效果一样
    ['Alex', 'Eric', 'Tom']
    

    3,追加

    方法:name.append(“值”)
    自动会在列表最后追加

    >>> names
    ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy']
    >>> names.append("我是新来的")
    >>> names
    ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']
    

    4,插入

    方法:name.insert(2,"alex")
    代表在name中下标为2的值后面插入一个值为alex的元素

    >>> names
    ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']
    >>> names.insert(2,"强行从Eric前面插入")
    >>> names
    ['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']
    

    5,修改

    方法:name[2] ="alex"
    直接去赋值

    >>> names
    ['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']
    >>> names[2] = "该换人了"
    >>> names
    ['Alex', 'Tenglan', '该换人了', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']
    

    6,删除

    方法:name.remove["alex"] 删除指定的元素
    name.pop() 删除最后的元素
    del name[2] 删除指定下标的元素

    >>> del names[4]
    >>> names
    ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']
    >>>
    >>> names.remove("Eric") #删除指定元素
    >>> names
    ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', '我是新来的']
    >>> names.pop() #删除列表最后一个值
    '我是新来的'
    >>> names
    ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy']
    

    7,扩展

    方法: name.extend(b)
    扩展列表name,将列表b加入到列表name中。

    >>> names
    ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy']
    >>> b = [1,2,3]
    >>> names.extend(b)
    >>> names
    ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]
    

    8,拷贝

    方法:names=name.copy()
    代表将name列表复制一份给names。
    当name改变的时候,name是不会变的

    >>> names
    ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]
    >>> name_copy = names.copy()
    >>> name_copy
    ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]
    >>> name
    [1, 2, 3, 4, 5, 4, 6]
    >>> names=name.copy()
    >>> names
    [1, 2, 3, 4, 5, 4, 6]
    >>> name.append(8)
    >>> name
    [1, 2, 3, 4, 5, 4, 6, 8]
    >>> names
    [1, 2, 3, 4, 5, 4, 6] #copy之后,name变了,但是names是不会变的
    

    9,统计

    方法:name.count("alex")

    >>> names
    ['Alex', 'Tenglan', 'Amy', 'Tom', 'Amy', 1, 2, 3]
    >>> names.count("Amy")
    2
    

    10,排序&反转

    方法:name.sort() 3.0不同的数据类型不能放在一起排序。
    反转 name.reverse()
    3.0里不同数据类型不能放在一起排序了,python2可以。

    >>> names=[1,2,3,5,3,6,6,8,95,87]
    >>> names.sort()
    >>> names
    [1, 2, 3, 3, 5, 6, 6, 8, 87, 95]
    >>> names.reverse()
    >>> names
    [95, 87, 8, 6, 6, 5, 3, 3, 2, 1]
    

    11,获取下标

    方法:name.index("Amy") #只返回找到的第一个下标

    >>> names
    ['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '3', '2', '1']
    >>> names.index("Amy")
     2 #只返回找到的第一个下标
    

    二,元组操作

    元组
    元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表。
    它只有2个方法,一个是count,一个是index,完毕
    方法1:name.count("alex")
    方法2:name.index("wzb")

    >>> name=("alex","wzb","liyuan")
    >>> name[1]
    'wzb'
    >>> name[1:]
    ('wzb', 'liyuan')
    >>> name.count("wzb")
    1
    >>> name.index("wzb")
    1
    

    三、字符串操作

    3.1 基本字符串的操作(字符串是不可变的,分片赋值是不合法的)

    标准的序列操作:索引、分片、乘法、判断成员资格、求长度、取最大最小值

    3.1.1 索引

    >>> name="brucewu"
    >>> name[4]
    'e'
    示例:根据给定的年月日,以数字形式打印出日期
    

    月份和日期结尾字典

    months =['January','February','March','April','May','June','July','August','September',
             'October','November','December']
    ​
    endings = ['st','nd','rd'] + 17*['th']
            + ['st','nd','rd'] + 7*['th']
            + ['st']
    ​
    #输入年月日
    year = input('year:')
    month = input('month(1-12):')
    day = input('day(1-31:')
    ​
    #月份和日期类型转换
    month_number = int(month)
    day_number = int(day)
    ​
    #月和日的取得,使用列表索引
    month_name = months[month_number - 1]
    ordinal = day + endings[day_number - 1]
    year:2017
    month(1-12):12
    day(1-31:22
    December 22nd.2017
    

    3.1.2 分片

    >>> tag="http://www.liaoxuefeng.com/"
    >>> tag[7:]
    'www.liaoxuefeng.com/'
    >>> tag[7:-1]
    'www.liaoxuefeng.com'
    示例:分片示例
    url = input("Please input url:")
    domain = url[4:-4]
    print("Domain name:"+domain)
    Please input url:www.python.com
    Domain name:python
    

    3.1.3 序列相加(同类型的才能相加)

    >>> "hello"+"world"
    'helloworld'
    >>> "hello"+2
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: Can't convert 'int' object to str implicitly
    

    3.1.4 乘法

    >>> name="wu"
    >>> names=name*5
    >>> names
    'wuwuwuwuwu'
    >>> []*100
    []
    

    3.1.5 成员资格(in)

    >>> url="www.python.org"
    >>> "python" in url
    True
    

    3.1.6 长度,最大和最小值(len、max、min)

    >>> url="www.python.org"
    >>> len(url)
    14
    >>> max(url)
    'y'
    >>> min(url)
    '.'
    

    3.2 字符串的格式化

    1. 格式化操作符的右侧数可以是任意类型,如果是元组或者映射类型(如字典)。那么字符串的格式化将会有所不同。
    2. 如果操作数是元组,其中每个元素都会被单独格式化,每个值都需要一个对应的转换说明。
    基本的转换说明符。注意,这些项的顺序至关重要。

    (1)%字符:转换说明符开始。
    (2)转换标志(可选):- 表示左对齐;+表示要在转换值之前要加正负号;""(空白字符)表示正数前要保留空格;0 表示转换值若位数不够则用0填充。
    (3)最小字段宽度(可选):转换后字符串至少应具有的指定宽度。如果是,宽度值从元组中读出。
    (4)点(.)后跟精度值(可选):如果是实数,精度指的是出现在小数点后的位数。如果是字符串,该数字表示最大字段宽度。如果是
    ,精度从元组中读出。
    (5)转换类型:
    格式符为真实值预留位置,并控制显示的格式。格式符可以包含有一个类型码,用以控制显示的类型,如下:

    %s 字符串 (采用str()的显示)
    %r 字符串 (采用repr()的显示)
    %c 单个字符
    %b 二进制整数
    %d 十进制整数
    %i 十进制整数
    %o 八进制整数
    %x 十六进制整数
    %e 指数 (基底写为e)
    %E 指数 (基底写为E)
    %f 浮点数
    %F 浮点数,与上相同
    %g 指数(e)或浮点数 (根据显示长度)
    %G 指数(E)或浮点数 (根据显示长度)
    %% 字符"%"

    3.2.1 简单转换

    >>> "price of eggs:$%+d" %42
    'price of eggs:$+42'
    >>> "price of eggs:$%.5f" %42.98979797
    'price of eggs:$42.98980'
    
    宽度按设置为10
    >>> from math import pi
    >>> "%10.5f" % pi
    '   3.14159'
    

    3.2.2使用对齐和0填充

    >>> "%-10.5f" % pi
    '3.14159   '
    >>> "%+10.5f " % pi
    '  +3.14159 '
    >>> "%+10.5f " % -pi
    '  -3.14159 '
    

    3.3 字符串的方法

    3.3.1 查找字串:Find

    返回字串所在位置最左端的索引,没有找到返回-1

    url = "www.python.com"
    print(url.find("www"))
    print(url.find("python"))
    print(url.find("sb"))
    #长度超出也返回-1
    print(url.find("www.python.comss"))
    -----------------------------------
    0
    4
    -1
    -1
    

    3.3.2 连接序列中元素:join(split的逆向方法)

    注意:连接元素必须是字符串
    seq = ["1","2","3","4","5",]
    sep = "+"
    result = sep.join(seq)
    print(result)
    ----------------------------
    1+2+3+4+5
    

    3.3.3 转换小写:lower

    使用场景:匹配字符串的时候区分大小写,如果想做到简洁,可以把字符串全部转换为小写来匹配

    url = "WWW.Python.Com"
    url_low = url.lower()
    print(url_low.find("python"))
    -------------------------------
    4
    

    3.3.4 替换:replace(查找并且替换)

    说明:返回某字符串所有匹配项均被替换的结果

    url = "WWW.Python.Com"
    print(url.replace("Python","python"))
    --------------------------------------
    WWW.python.Com
    

    3.3.5 分割字符串:split

    说明:将字符串分割成序列

    seq = "1+2+3+4+5"
    print(seq.split('+'))、
    -----------------------
    ['1', '2', '3', '4', '5']
    特别说明:不提供分割符号,默认使用空格
    url = "WWW Python Com"
    print(url.split())
    ----------------------
    ['WWW', 'Python', 'Com']
    

    3.3.6 去两侧空格:strip

    说明:不包括内部

    url = "    WWW Python Com    "
    print(url.strip())
    ----------------------
    WWW Python Com
    指定要去除的两侧符号:
    url = "    !!!///****WWW &&//*Python Com  *!/  "
    print(url.strip(' !*/'))
    ------------------------------
    WWW &&//*Python Com
    

    3.3.7 其他重要方法

    name.capitalize()  首字母大写
    name.casefold()   大写全部变小写
    name.center(50,"-")  输出 '---------------------Alex Li----------------------'
    name.count('lex') 统计 lex出现次数
    name.encode()  将字符串编码成bytes格式
    name.endswith("Li")  判断字符串是否以 Li结尾
    name.startswith("Li")
    name.isdigit("5") #判断是否为数字
    name.isnumeric  
    name.isprintable
    name.isspace
    name.istitle
    name.isupper
    name="bruce wu"
    if name.startswith("bruce"):
        print("yes")
    else:
        print("no")
    ---------------------
    yes
    

    3.3.8 替换:replace,translate,maketrans

    replace: 查找并且替换所有
    maketrans: 创建一个替换表
    translate: 使用替换表批量处理字符串
    intab = "aeiou"  #This is the string having actual characters.
    outtab = "12345" #This is the string having corresponding mapping character
    trantab = str.maketrans(intab, outtab)
    str = "this is string example....wow!!!"
    print(str.translate(trantab))
    ---------------------------------
    th3s 3s str3ng 2x1mpl2....w4w!!!
    
  • 相关阅读:
    Windows下给你mac下的开发体验 windows+wsl+zsh+vscode
    Puppeteer在docker下踩坑记录
    egret EUI加载 JSZip打包DragonBones二进制文件
    nodeJS rsasha加密
    Elasticsearch 聚合字段后 获取聚合字段的单条详细信息
    【转发自用】Apache2.4服务器权限设置问题
    C#重写VIVO支付SDK VivoSignUtils
    VS2017 空白 node.js web应用程序
    less开发
    获取样式getComputedStyle
  • 原文地址:https://www.cnblogs.com/kakarott/p/8087260.html
Copyright © 2020-2023  润新知