zoukankan      html  css  js  c++  java
  • python关于列表、元组和字符串的有关操作

          今天总结一下列表的一些基本操作以及字符串和字典的操作。

    1. 列表
     1 name=["张三","赵四","王五","刘德华","周杰伦"]
     2 print(name[1:3])
     3 print(name[-3:-1])
     4 print(name[0])

            这是创建一个列表,并打印的方法。其中第二列是打印列表第二到第三个元素,第三列是打印列表的第三和第四个元素,而第四行是打印列表的第一个元素,很简单。

    • 列表的添加

              列表的添加与两种方法,第一种是使用append()方法,第二种是使用insert()方法。

    name.append("李荣浩")
    name.insert(2,"周星驰")

             虽然两种方法都可以添加元素到列表中去,但却是不同的。第一种是直接将“李荣浩”这个元素插入到列表的最后面的位置,而第二种方法是将“周星驰”这个元素查到列表的第三个元素处,这里的insert()方法有两个参数,第一个参数就是在列表中要插入的位置。

    • 列表元素的删除

              列表元素的删除有三种方法。

    name.remove("周星驰")
    del name[2]
    name.pop(2)

           第一种是知道要删除的元素是什么,直接作为参数填在remove()方法中即可。第二种是python语言的通用方法,意思是删除列表的第三个元素。第三种方法与第二种方法同义。

    • 列表元素的修改

              列表元素修改可以通过给元素赋值的方法来修改元素,如:

    name[2]="周迅"
    • 列表元素的查找
    print(name.index("周杰伦"))
    print(name[name.index("周杰伦")])
    print(name.count())

               name.index()方法显示元素在列表中的序号。

    列表所具有的方法有很多,使用pycharm编译环境很容易使用这些方法。下面简单介绍一些有用的、简单的方法:

    name.reverse()                             //反转列表
    name.clear()                                 //清空列表,等于  del name
    name.sort()                                  //列表排序
    name.extend(name2)                    //将列表name2合并到列表name中去

    这里详细介绍一下copy()方法,因为这里有一个需要注意的点,如果内有弄清楚,很容易在今后的编程中出现错误。

    import copy
    name=["张三","赵四","王五",["李易峰","朱一龙"],"刘德华","周杰伦"]
    name2=name.copy()
    name3=copy.deepcopy(name)
    name2[0]="张八"
    name3[3][0]="王一峰"
    print(name)
    print(name2)
    print(name3)
    

              name是一个既包含元素又包含列表的列表,name2和name3是copy列表name的两个列表,不同的是name2是浅copy,而name3是深copy。name2只copy了列表name的第一层,而其中包含的列表没有copy进来,只是copy了包含的列表的地址,因此name和name2两个列表只要有一个列表修改了内层的列表,两个列表便都修改的列表的内容。但是name3却不会发生这样的事情,因为name3是深copy,copy的不只是内层的列表的地址,而是将内层的列表也copy了一份,因此:name3[3][0]="王一峰"这句语句只改变name3内层的列表而并不改变name的内层列表。       

             当然,浅copy也有用处。浅copy,只copy第一层列表之中可以包含一层列表,但此时copy只能copy到包含列表的地址,而不能copy到实际内容。

             浅copy有三种方法,其效果相同:

    p1=copy.copy((person))
    p2=person[:]
    p3=list(person)

              浅copy的作用:创建联合账号

    • 列表的循环:
    #列表的循环
    for i in name2:
        print(i)

           2.元组

    • 元组其实跟列表差不多,也是存一组数,只是他一旦创建,便不能再修改,所以又叫只读列表。其格式如下:
    name=('zhang','wang')

    元组只有两个方法,一个是count,一个是index。使用方法如下:

    name=('zhang','wang','zhang','liu')
    print(name.count('zhang'))
    print(name.index('zhang'))

    显示:2

               0

    第一个打印的是元素‘zhang’在元组中的个数,第二个打印的是元素‘zhang’在元组中的最先出现的位置。

    下面是运用列表和元组编写的一个简单的购物车小程序:

    #_Author_ = " Uranus Jerry"
    
    
    salary=input("your salary:")
    if salary.isdigit():
        salary=int(salary)
    print("Shopping List")
    list=[("IPhone",5000),
          ("Bike",800),
          ("IPad",2000),
          ("Nike",1000),
          ("Book",50),
          ("Watch",2000),
          ("milk",30),
          ("apple",10)
    ]
    shopping_list=[]
    while True:
        '''for item in list:
            print(list.index(item),item)'''
        for index, item in enumerate(list):
            print(index,item)
        user_choice=input("选择要买的商品>>>:")
        if user_choice.isdigit():
            user_choice=int(user_choice)
            if user_choice<len(list) and user_choice>-1:
                p_item=list[user_choice]
                if p_item[1]<=salary:
                    salary-=p_item[1]
                    shopping_list.append(p_item)
                    print(p_item,"已经加入您的购物车,您当前的余额为33[31;1m%s33[0m"%salary)
                else:
                    print("33[41;1m您的余额已不足:%s33[0m"%salary)
            else:
                print("商品不存在...")
        elif user_choice=='q':
            print("-------shoppng list------")
            for p in shopping_list:
                print(p)
            print("您的余额为%s"%salary)
            exit()
        else:
            print("invalid choice")

                3.字符串

              字符串的方法总结如下:

    #_Author_ = " Uranus Jerry"
    
    name="my 	name is 	Uranus"
    print(name.capitalize())                   #将name首字母大写
    print(name.count('a'))                     #计算name字符串中‘a'的个数
    print(name.center(50,'-'))                #打印50个字符,字符串name放在中间,不够的用‘-’补上
    print(name.endswith("us"))               #判断name是否以‘us'结尾
    print(name.expandtabs(30))               #在/t标记处转换成30个空格
    print(name.find(('name')))              #查找‘name’在字符串name中的第一个位置的标号
    print(name.isalnum())                    #判断字符串是否是阿拉伯数字或英文字符
    print(name.isalpha())                    #判断字符串是否完全是英文字符,包含大写
    print(name.isdecimal())                  #检查字符串是否只包含十进制字符。
                                             # 定义一个十进制字符串,只需要在字符串前添加 'u' 前缀即可
    print(name.isdigit())                    #判断字符串是否是数字
    print(name.isidentifier())               #判断是否是合法的变量名
    print(name.isnumeric())                  #判断是否是一个数字,不包含标点,如2.1则不符合
    print(name.isspace())                    #判断是否是一个空格
    print(name.istitle())                    #判断是否是标题格式,即每个单词首字母大写
    print(name.isprintable())                #判断是否可打印
    print('ASa'.isupper())                    #判断是否全是大写
    print('+'.join(['1','2','3']))          #打印结果:1+2+3
    print(name.ljust(30,'*'))                #打印结果:my     name is Uranus************;rjust()类似
    print(name.lower())                      #将字符串变成小写
    print(name.upper())                      #将字符串变成大写
    print(name.strip())                      #去掉字符串两头的空格和回车,lstrip()和rstrip()分别是去掉左边和右边的空格和回车
    p=str.maketrans('acdefgurns','1234567890')
    print("uranus".translate(p))             #显示:781970
    print("uranus".replace('u','U',1))      #替换,把第一个u替换成U,把第三个参数去掉则把所有的u换成U
    print(name.split('a'))                   #以‘a'作为分隔符分割字符串
    print(name.splitlines())                  #以换行符为分隔符
    print(name.swapcase())                    #大小写相互转换
    print(name.title())                       #转换为标题格式:My     Name Is     Uranus
    print(name.zfill(30))                     #显示:00000000000my     name is     Uranus

                                                         2019-02-09

    16:51:48

    Uranus Jerry

  • 相关阅读:
    远程监控JVM
    性能测试的思考
    吴恩达《机器学习》课程总结(11)机器学习系统的设计
    吴恩达《机器学习》课程总结(10)应用机器学习的建议
    吴恩达《机器学习》课程总结(9)神经网络的学习
    吴恩达《机器学习》课程总结(8)神经网络表述
    吴恩达《机器学习》课程总结(7)正则化
    吴恩达《机器学习》课程总结(6)逻辑回归
    吴恩达《机器学习》课程总结(5)Octave教程
    吴恩达《机器学习》课程总结(4)多变量线性回归
  • 原文地址:https://www.cnblogs.com/zhengxunjie/p/10357666.html
Copyright © 2011-2022 走看看