• python学习day3------列表、元组、字符串操作


    列表是有序的,支持增删改查,可以嵌套列表、字典(任何东西)

    元组是有序的,只读列表

    字符串的操作,可查,不可修改(本质新新的内容覆盖了原来的)

    字典是无序的,通过K:V找元素,可以嵌套列表、字典

    集合是无序的

    一、列表

    变量名后加中括号[],接下来介绍对列表进行查操作

     1 #!/usr/bin/env python
     2 #-*- Coding:utf-8 -*-
     3 # Author:Eric.Shen
     4 
     5 test = []#列表的命名形式
     6 
     7 name = ["zhangsan","lisi","wangmazi","chenwu","gousheng"]
     8 print(name[0],name[2])#取出已知位置的数据,因为计算机在存储数据的时候是以0为开始位置
     9 #>>>>zhangsan wangmazi
    10 
    11 #
    12 #切片
    13 print(name[1:3])#从计算机位第一个位取到第二位:顾首不顾尾,
    14 #>>>>['lisi', 'wangmazi']
    15 
    16 
    17 print(name[4])#在知道列表有多长的时候用这个方法可以取到列表最后一位
    18 #>>>>gousheng
    19 
    20 
    21 print(name[-1])#在不知道长度有多长的时候用这个方法可以取到最后一位
    22 #>>>>gousheng
    23 
    24 
    25 print(name[-2])#亦可理解位从0往左数
    26 #>>>>chenwu
    27 
    28 
    29 print(name[-2:])#即便是写的是负数的位置表示,也是自左往右数,
    30                 # 但是有一个机制就是顾首不顾尾,
    31                 # 但我想取最后一位的时候就会被忽略掉,
    32                 # 所以这个时候在冒号后面什么都不写就可以
    33 #>>>>['chenwu', 'gousheng']
    34 
    35 
    36 print(name[0:3])
    37 #>>>>['zhangsan', 'lisi', 'wangmazi']
    38 print(name[:3])#这两个效果一样,前面若是0的话就可以省略不写
    39 #>>>>['zhangsan', 'lisi', 'wangmazi']
    View Code

    对列表进行增、替换、删等操作

     1 #!/usr/bin/env python
     2 #-*- Coding:utf-8 -*-
     3 # Author:Eric.Shen
     4 
     5 test = []#列表的命名形式
     6 
     7 name = ["zhangsan","lisi","wangmazi","chenwu","gousheng"]
     8 #
     9 #追加数据
    10 name.append("quandan")
    11 #>>>>['zhangsan', 'lisi', 'wangmazi', 'chenwu', 'gousheng', 'quandan']
    12 
    13 #插在指定位置
    14 name.insert(1,"mingzi")#想把数据插在第几机器位就直接写
    15 #>>>>['zhangsan', 'mingzi', 'lisi', 'wangmazi', 'chenwu', 'gousheng', 'quandan']
    16 
    17 #
    18 name[2] = "qiangzi"#把在机器位置2上的lisi换下来用qiangzi
    19 #>>>>['zhangsan', 'mingzi', 'qiangzi', 'wangmazi', 'chenwu', 'gousheng', 'quandan']
    20 
    21 #
    22 name.remove("wangmazi")#在知道名字的情况下删除wangmazi
    23 del name[3] #删除机器位置3上的名字
    24 name.pop()#默认不输入机器位置就删除最后一个,如果输入机器位就跟del name[3]一样
    25 print(name)
    View Code

    清空、反转、排序、扩展

     1 #!/usr/bin/env python
     2 #-*- Coding:utf-8 -*-
     3 # Author:Eric.Shen
     4 
     5 test = []#列表的命名形式
     6 
     7 name = ["zhangsan","lisi","wangmazi","chenwu","gousheng","lisi"]
     8 #查找wangmazi位置
     9 print(name.index("wangmazi"))
    10 #>>>> 2
    11 #找出上述找到的位置删的名字
    12 print(name[name.index("wangmazi")])
    13 #>>>>wangmazi
    14 
    15 #列表允许出现多个名字一样的
    16 print(name.count("lisi"))#查找叫lisi的有几个
    17 
    18 #name.clear()#清空列表
    19 #name.reverse()#反转列表
    20 #name.sort()#排序,按照ascll码进行排序
    21 name1 = [1,2,3,4]
    22 name.extend(name1)#扩展,将name1添加到name后面,name1没有删除
    23 print(name)
    24 #>>>>['zhangsan', 'lisi', 'wangmazi', 'chenwu', 'gousheng', 'lisi', 1, 2, 3, 4]
    View Code

    复制copy、深copy

     1 #!/usr/bin/env python
     2 #-*- Coding:utf-8 -*-
     3 # Author:Eric.Shen
     4 import  copy
     5 
     6 test = []#列表的命名形式
     7 #name[]是一个列表在内存中存储name指向存储的地址,你更改name里的东西name2也会跟着变得
     8 #因为他们共同指向内存地址,修改name2,name也会变
     9 name = ["zhangsan","lisi","wangmazi",["eric","jack"],"chenwu","gousheng","lisi"]
    10 
    11 name2 = name.copy()#复制一份copy只是浅得复制了一些,只复制第一层列表
    12 name[2] = "王麻子"
    13 name[3][0] = "ERIC"
    14 print(name,"
    ",name2)
    15 
    16 #这个是赋值
    17 name2 = name
    18 #深copy就是完全复制,需要添加copy模
    19 name2 = copy.deepcopy(name)
    View Code

    分位切片

     1 #!/usr/bin/env python
     2 #-*- Coding:utf-8 -*-
     3 # Author:Eric.Shen
     4 import  copy
     5 
     6 test = []#列表的命名形式
     7 #name[]是一个列表在内存中存储name指向存储的地址,你更改name里的东西name2也会跟着变得
     8 #因为他们共同指向内存地址,修改name2,name也会变
     9 name = ["zhangsan","lisi","wangmazi",["eric","jack"],"chenwu","gousheng","lisi"]
    10 #跳两位进行切片
    11 print(name[0:-1:2])#这个语句得作用就是从0到-1位每跳两位进行切
    View Code

    二、元组

    查找数据的位置

     1 #!/usr/bin/env python
     2 #-*- Coding:utf-8 -*-
     3 # Author:Eric.Shen
     4     
     5     
     6 #元组就两个功能count,index,得到机器位
     7 name = ("zhangsan","lisi","wangmazi")
     8 print(name.count("zhansgan"))
     9 #>>>>0
    10 print(name.index("lisi"))
    11 #>>>>1
    View Code

     三、字符串操作

    首字母大写

    统计字符串有几个字母

     1 #!/usr/bin/env python
     2 #-*- Coding:utf-8 -*-
     3 # Author:Eric.Shen
     4 #字符串操作
     5 name = "my {name} is {eric}"
     6 #首字母大写
     7 print(name.capitalize())
     8 #>>>Eric
     9 
    10 #统计字符串---下面的程序是统计字符串a有多少个
    11 print(name.count("a"))
    12 #>>>>0
    13 
    14 #将字符串用50个*包裹着写在中间
    15 print(name.center(50,"*"))
    16 #>>>>***********************eric**********************
    17 
    18 #判断字符串是不是以ic结尾
    19 print(name.endswith("ic"))
    20 #>>>>True
    21 
    22 #在字符串中写一个tab键,它将tab转换多少个空格
    23 #name ="eri	c"
    24 print(name.expandtabs(tabsize=30))
    25 #>>>>eri                           c
    26 
    27 #找字符串相应元素的机器位数
    28 print(name.find("name"))
    29 #>>>>3
    30 
    31 #判断是否有阿拉字符
    32 print("abc123".isalnum())
    33 #判断是否包含英文字符(返回True或False)
    34 print("asA".isalpha())
    35 #判断是否为10进制
    36 print("1A".isdecimal())
    37 #判断是不是一个整数
    38 print("1A".isdigit())
    39 #判断是不是一个合法的标识符(变量名)
    40 print("1A".isidentifier())
    41 #判断是不是小写
    42 print("aA".islower())
    43 #检测字符串是否只由数字组成。这种方法是只针对unicode对象。
    44 print("1a".isnumeric())
    45 #判断是不是标题,判断标准是每个首字母大写
    46 print("My name is title".istitle())
    47 #设备终端文件用此方法判断
    48 print("My name is ".isprintable())
    49 #判断是不是全部大写
    50 print("aD".isupper())
    51 #将字符串区分开
    52 print("+".join(["1","2","3"]))
    53 #>>>>1+2+3
    54 #保证我的字符串长度为50,不够的在后面以*补全
    55 print(name.ljust(50,"*"))
    56 #保证我的字符串长度为50,不够的在前面补上-
    57 print(name.rjust(50,"-"))
    58 #把大写变成小写
    59 print("Eric".lower())
    60 #把小写换成大写
    61 print("Eric".upper())
    62 #从左边去掉空格或者回车
    63 print("
    Eric".lstrip())
    64 #从右边去掉空格或者回车
    65 print("Eric
    ".rstrip())
    66 #去掉两边的空格或者回车
    67 print("
    Eric
    ".strip())
    68 #命名的时候前后的位数一致,把字母与数字对应,然后显示p如果有对应的字母换作后面的显示(嗯古时候密文一样)
    69 p = str.maketrans("abcde","12345")
    70 print("Eric".translate(p))
    71 #>>>>Eri3
    72 
    73 #替换(把c换成大写的C)后面还可以跟一个参数。替换几个(print("Eric c".replace("c","C",1)))
    74 print("Eric c".replace("c","C"))
    75 #找到最后边那个值得下标返回
    76 print("eric ic".rfind("c"))
    77 #把字符串按照空格(默认)分成列表
    78 print("eric is ".split())
    79 #把字符串按照行分
    80 print("eric
     c".splitlines())
    81 #全部变成大写
    82 print("eric c".swapcase())
    83 #前边不够50位自动用0填充
    84 print("eric c".zfill(50))
    View Code

    四、字典操作

    增删查改

     1 #!/usr/bin/env python
     2 #-*- Coding:utf-8 -*-
     3 # Author:Eric.Shen
     4 
     5 #Key-value
     6 info = {
     7     'stu1101': "TengLan Wu",
     8     'stu1102': "LongZe Luola",
     9     'stu1103': "XiaoZe Maliya",
    10 }
    11 #字典是无需得没下标,有key
    12 print(info)
    13 #改字典stu1101(若不存在则创建)
    14 info["stu1101"] = "武藤兰"
    15 #查字典
    16 print(info["stu1101"])
    17 #删除字典
    18 del info["stu1101"]
    19 #指定删除
    20 info.pop("stu1101")#标准姿势
    21 #随机删除
    22 info.popitem()
    23 
    24 
    25 #
    26 print(info.get("stu1103"))#得到其key对应得值
    27 print("stu1103" in info)#info.has_key("1103") in py2.x
    View Code

    取值

     1 #!/usr/bin/env python
     2 #-*- Coding:utf-8 -*-
     3 # Author:Eric.Shen
     4 
     5 #Key-value
     6 info = {
     7     'stu1101': "TengLan Wu",
     8     'stu1102': "LongZe Luola",
     9     'stu1103': "XiaoZe Maliya",
    10 }
    11 b = {
    12     'stu1101': "Eric",
    13     1:3,
    14     2:5
    15 }
    16 
    17 #升级:有相同得key就覆盖,没有得就创建
    18 info.update(b)
    19 print(info)
    20 
    21 #初始化一个新的字典(作用跟copy一样)
    22 c = dict.fromkeys([6,7,8],[1,{"name":"eric"},666])
    23 print(c)
    24 c[7][1]["name"] = "ASD"
    25 print(c)
    26 #{8: [1, {'name': 'eric'}, 666], 6: [1, {'name': 'eric'}, 666], 7: [1, {'name': 'eric'}, 666]}
    27 #{8: [1, {'name': 'ASD'}, 666], 6: [1, {'name': 'ASD'}, 666], 7: [1, {'name': 'ASD'}, 666]}
    28 
    29 #字典变成列表
    30 print(info.items())
    31 
    32 av_catalog = {
    33     "欧美":{
    34         "www.youporn.com": ["很多免费的,世界最大的","质量一般"],
    35         "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
    36         "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
    37         "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]
    38     },
    39     "日韩":{
    40         "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]
    41     },
    42     "大陆":{
    43         "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]
    44     }
    45 }
    46 #修改
    47 av_catalog["大陆"]["1024"][1] = "可以在国内做镜像"
    48 
    49 #只打印关键字
    50 print(info.keys())
    51 
    52 #先去taiwan里取值,如果没有就创建,有就把它取出来
    53 av_catalog.setdefault("taiwan",{"www.baidu.com":[1,2]})
    54 print(av_catalog  )
    View Code

    字典的循环

     1 #!/usr/bin/env python
     2 #-*- Coding:utf-8 -*-
     3 # Author:Eric.Shen
     4 
     5 #Key-value
     6 info = {
     7     'stu1101': "TengLan Wu",
     8     'stu1102': "LongZe Luola",
     9     'stu1103': "XiaoZe Maliya",
    10 }
    11 
    12 #字典的循环
    13 for i in info:
    14     print(i,info[i])
    15 
    16 #先转成列表在循环输出
    17 for k,v in info.items():
    18     print(k,v)
    19 
    20 #前者快后者慢
    View Code

     五、集合

    集合的运算:交并补差,对称差集

     1 #!/usr/bin/env python
     2 #-*- Coding:utf-8 -*-
     3 # Author:Eric.Shen
     4 
     5 #集合也是无序的
     6 list1 = [1,5,9,4,8,3,45,7,]
     7 list1 = set(list1)
     8 
     9 list2 = set([2,6,5,7,9,1,56,4])
    10 print(list1,list2)
    11 
    12 #交集,list1与2的交集
    13 print(list1.intersection(list2))           #运算符表达交集 a = t & s
    14 #并集1与2的并集
    15 print(list1.union(list2))                  #运算符表达并集 b = t | s
    16 #对称(反向)差集   交集的补集,全集是1和2 这是除去他们的交集剩下的元素
    17 print(list1.symmetric_difference(list2))   #运算符表达对称差集 d = t ^ s
    18 #差集1与2的差集,1与 1和2的交集之外的元素
    19 print(list1.difference(list2))             #运算符表达交集 c = t - s
    20 
    21 
    22 #子集
    23 list3 = set([1,3,7])
    24 
    25 #3是1的子集,返回为True
    26 print(list3.issubset(list1))
    27 #1是3的父集,返回为True
    28 print(list1.issuperset(list3))
    29 
    30 #3与4有没有交集(如果3和4没有交集则返回true)
    31 list4 = set([5,6,8])
    32 print(list3.isdisjoint(list4))
    View Code

    集合的增删

    1 #集合的添加  无序的
    2 list1.add(999)
    3 list1.update([999,77,55])
    4 print(list1)
    5 
    6 #集合的删除
    7 print(list1.pop())#删除任意的,并返回删除的那个内容
    8 print(list1.remove(44444))#删除不存在的会报错
    9 list1.discard(999999)#删除不存在的不会报错
    View Code
    Powers a lot like real estate.Its all about location, location, location.The closer you are to the source,the higher your property value.
  • 相关阅读:
    记-码农的“启蒙”之《程序设计语言-实践之路》和《面向对象分析和设计》两书
    记-阅读以及书籍推荐(2014年9月7日更新)
    初探领域驱动设计(1)为复杂业务而生
    异步编程 In .NET
    Windows平台分布式架构实践
    Windows平台分布式架构实践
    一不小心写了个WEB服务器
    MVC5
    从Membership 到 .NET4.5 之 ASP.NET Identity
    bootstrap + requireJS+ director+ knockout + web API = 一个时髦的单页程序
  • 原文地址:https://www.cnblogs.com/zhengyuan/p/8399142.html
Copyright © 2020-2023  润新知