zoukankan      html  css  js  c++  java
  • Python基础3切片,字符串的方法,for 循环

    切片

    切片截取序列(字符串,列表,元组等)中某一段字符,并不改变原数据和数据类型。结构:[起始位置:终止位置:步长]  但不包括终止位置。所谓:顾头不顾尾。

    索引:序列中每个元素都是有编号的,都是从0开始编号的。使用负数索引时,Python会从右边开始数,第一个元素为-1. 注意:用索引,在列表里是什么类型取出来的就是什么数据类型。而切片不一样,切出来的都是列表。

    范例:

    list=[1,2,"wo"]
    print(list[1],type(list[1]))
    print(list[2],type(list[2]))
    print(list[1:2],type(list[1:2]))
    print(list)

    结果:

    2 <class 'int'>
    wo <class 'str'>
    [2] <class 'list'>
    [1, 2, 'wo']

    倒取值(即取负值)切片:起始位置和步长共同决定了切取的方向,如果这两个切取方向不一致,会导致出现空值.

    例子

    word = "我是中国你好世界"
    
    print(word[-1:-5:-1])  # 注意:步长为负的,起始位置从右往左,所以应该从右向左切片
    
    # 结果  界世好你
    
    print(word[1:5:1])  # 注意:步长正的,起始位置从左往右,所以应该从左向右切片
    # 结果  是中国你
    
    print(word[-1:5:1])  # 注意:步长正的,起始位置从右往左,相矛盾所以为空
    # 结果空

    字符串方法

    字符串是不可变类型,就是说改变一个字符串的元素需要新建一个新的字符串,注意注意!!!这句话并不意味着,字符串没有方法,而是任何方法都不会改变原字符串,要得到使用方法的的结果只能另命名变量。它不像列表,使用方法(切片除外)会改变原列表。Python 里面没有字符这个类型,而是用长度为 1 的字符串来表示这个概念

    范例:

    print("list1",list1)
    print("new_list",new_list) #原字符串就不会变

    结果:

    list1 nihaokdjl
    new_list niHaokdjl

    范例2:

    list=[1,2,3,4]
    list.append(6666)
    print("list",list)     #列表就会变

    结果:

    list [1, 2, 3, 4, 6666]

     如何改变一个字符串?

    注意!注意!字符串是不可以改变的,但是你可以通过拼接,来“改变字符串”。

    a="您好,日本"
    print(a,id(a))
    a=a[:3]+"中国"
    print(a,id(a))

    结果:

    您好,日本 2207187472184
    您好,中国 2207188312992         #还是没有改变原来的字符串,仅仅是定义了一个和他相同的变量

    1.capitalize 字符串首字母大写,其余的全小写。

    s="abdeH,ehrDFG"
    print(s.capitalize())

    结果:

    Abdeh,ehrdfg

    2.title字符串 以特殊符号或者空格隔开,隔开的每一部分的首字母大写,如果不隔开那就是一个字符串的首字母大写。其余的全是小写,与capitalize的不同是,capitalize特殊符号或者空格隔开的首字母不大写。

    列子:

    s="abdeH,ehrerG"
    b="sjhiHjkh"
    print("s",s.t)itle())
    print("b",b.title()

    结果:

    s Abdeh,Ehrerg
    b Sjhihjkh

    3. upper() 方法将字符串中的小写字母转为大写字母。这里不举例子了

    4. lower() 方法将字符串中的大写字母转为小写字母。这里不举例子了

    5.count(“某元素”,索引开始,索引结束)字符串中某元素出现的个数,索引可以不写。

    s="abdeH,ehrerG"
    print("s",s.count("e"))

    结果:

    s 3

    6.startswith 判断是否以..开头

      endswith 判断是否以..结尾

    例子:

    s="abdeH,ehrerG"
    print("s",s.startswith("abde"))
    print("s",s.endswith("Gr"))
    print("s",s.endswith("rG"))

    结果:

    s True
    s False   #
    s True   #注意这个和上个的不同

    7.find 寻找某个元素的索引值   str.find(str, beg=0, end=len(string))。如果找不到显示-1.

    index 寻找某个元素的索引值   str.find(str, beg=0, end=len(string))。如果找不到显示会报错.

    注意这两个函数:如果字符串中有多个相同的元素,只会得到最左边的索引。
    s="abdeH,ehrerG"
    print("s",s.find ("e"))
    print("s",s.index ("e"))
    print("s",s.index("tt"))

    结果:

    s 3
    Traceback (most recent call last):
    s 3
      File "C:/Users/PycharmProjects/untitled/day1/联系.py", line 463, in <module>
        print("s",s.index("tt"))
    ValueError: substring not found

    8.strip() 方法用于移除字符串头尾指定的字符(默认为默认删除空白符(包括' ', ' ',  ' ',  ' ')),可传入一个参数,指定要去除的首尾。需要注意的是:传入的是一组字符串是编译器去除两端所有相应的字符,这个相应的字符是什么意思?这是关键看例子:

    heString = 'saaaay yes no yaaaass'
    print(theString.strip("say"))

    得到的答案:

     yes no 

    您发现了什么?是不是只要前后两端含有"a","s","y",就会从两端向中间开始删除,直到遇到不是这三个字符停止。并不是把"say"当做整体去删除。

     rstrip() 删除 string 字符串右边(right)的指定字符(默认为空格).方法同strip,

     lstrip() 删除 string 字符串左边(left)的指定字符(默认为空格).方法同strip,

    列子:

    s="aabdeH,ehrerG"
    print("s",s.strip ("a",))
    print("s",s.strip ("G",))

    结果:

    s bdeH,ehrerG
    s aabdeH,ehrer

    8.5 list()。将字符串按照字符分割成列表

    a = 'wupeiqi'
    l = list(a)
    print(l)

    结果:

    ['w', 'u', 'p', 'e', 'i', 'q', 'i']

    9.str.split(str="", num=string.count(str)).将字符串按照分隔符分割成列表 

    • str -- 分隔符,默认为所有的空字符,包括空格、换行( )、制表符( )等。
    • num -- 分割次数。

    例子:

    s="aabdeH,ehrerG"
    print("s",s.split (",",1))

    结果:

    s ['aabdeH', 'ehrerG']

    10. replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。如果不指定第三个,则全部替换。

    str.replace(old, new[, max])
    例子:
    s="我爱中国,中国中国"
    print("s",s.replace ("中国","我国",1))

    结果:

     我爱我国,中国中国

    10. str.isdigit()  判断字符串是否全部由数字组成。 

    11.str.isalnum  判断字符串是否含有数字或字母。

    字符串的格式化

    format_map

    利用字典的映射关系

    a = {
        "k":"中国",
        "l":"你好"
    }
    str = "{l},我爱{k}".format_map(a)
    print(str)
    
    结果:你好,我爱中国
    profession = { 'name':['Barry', 'Bruce'], 
                   'profession':['Engineer', 'Doctor'], 
                   'age':[30, 31] } 
                           
    # Use of format_map() function  
    print('{name[0]} is an {profession[0]} and he'
          ' is {age[0]} years old.'.format_map(profession)) 
            
    print('{name[1]} is an {profession[1]} and he'
          ' is {age[1]} years old.'.format_map(profession)) 
    
    #结果:
    Barry is an Engineer and he is 30 years old.
    Bruce is an Doctor and he is 31 years old.

    a = "中国"
    str = f"你好,我爱{a}"
    print(str)
    
    #结果:你好,我爱中国

     format

    format是我们比较常用的一个字符串格式化的方法

    简单的方法就不说了,说一下我在项目中遇到的format的用法,带有":"的

    数字格式的定义以 ':' 号开始。碰到了': '字符就知道要定义一个数字的显示格式了。格式的定义顺序为 

    1. 对齐方式(>右对齐、<左对齐、^居中)

    print('{:>10}'.format(933)) #10代表的为10位,不够10位的用空格表示,>代表右对齐
    #结果
           933

    2. 保留小数

    print('{:.2f}'.format(99.887))  # 2f指的是保留2位小数
    
    #结果
    99.89

    3.将小数转换成百分比

    print('{:.2%}'.format(0.333))  # 2%指的是保留小数点后两位
    
    #结果
    33.30%

    4.将10进制转换成其他进制

    '{0:x}'.format(20)                转换成十六进制
    
    '{0:o}'.format(20)                转换成八进制    
    
          进制转换的时候用{0:进制}

    5.指定整数的位数,不足在前边用0补齐

    import random
    
    verify_code = '{0:06d}'.format(random.randint(0, 999999)) #06指定出现的数字是6位的,不够6位的用0补在前面凑够6位,:前边的0可以省略
    print(">>>", verify_code)
    
    #结果
    053865

    for 循环

    不用for循环如何把一段字符串中的每个元素打印出来?

    seer="我爱中国我是中国人"
    count=0
    while count<len(seer):
        print(seer[count])
        count+=1

    结果:

    我
    爱
    中
    国
    我
    是
    中
    国
    人
  • 相关阅读:
    链表问题
    有关动态规划的LeetCode
    正则表达式匹配与自动机
    基于数据库范式的一点点想法
    html5 API
    Web鼠标事件
    webpack模块化原理
    Jquery数据缓存
    图片懒加载
    MySql存储过程的调试
  • 原文地址:https://www.cnblogs.com/sticker0726/p/7718639.html
Copyright © 2011-2022 走看看