zoukankan      html  css  js  c++  java
  • 1、Python基础二

    一、列表、元祖操作

    列表是我们最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作

    定义一个列表

    name = ['alex','tenglan','egg','eva_j']

    通过下标访问列表中的元素,下标从0开始计数

    print(name[0])   #结果输出alex
    print(name[2])   #结果输出egg       
    print(name[-1])  #结果输出eva_j
    print(name[-2])  #结果输出egg

    通过切片取多个元素:

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

    追加:

    names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"]
    names.append("我是新来的")
    print(names)
    #执行结果['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']

    插入

    names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"]
    names.insert(2,"我是插队的")
    print(names)
    #执行结果['Alex', 'Tenglan', '我是插队的', 'Eric', 'Rain', 'Tom', 'Amy']

    修改

    names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"]
    names[2]="换人了"
    print(names)
    #执行结果['Alex', 'Tenglan', '换人了', 'Rain', 'Tom', 'Amy']

    删除

    names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"]
    del names[4]    #通过下标删除元素
    print(names)
    #执行结果['Alex', 'Tenglan', 'Eric', 'Rain', 'Amy']
    names.remove('Eric')  #删除指定元素
    print(names)
    #执行结果['Alex', 'Tenglan', 'Rain', 'Amy']
    names.pop()      #删除列表最后一个值
    print(names)
    #执行结果['Alex', 'Tenglan', 'Rain']

    扩展

    names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"]
    b = [1,2,3]
    names.extend(b)
    print(names)
    #执行结果:['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', 1, 2, 

    拷贝

    names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"]
    name_copy = names.copy()
    print(name_copy)
    #执行结果['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy']

    统计

    names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"]
    print(names.count('Alex'))   #统计列表中有多少个Alex
    #执行结果1

    排序&翻转

    names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"]
    names.sort()
    print(names)
    #执行结果['Alex', 'Amy', 'Eric', 'Rain', 'Tenglan', 'Tom']
    names.reverse()
    print(names)
    #执行结果['Tom', 'Tenglan', 'Rain', 'Eric', 'Amy', 'Alex']

    获取下标

    names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"]
    print(names.index('Tom'))
    #执行结果4

    元组

    元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表

    他只有两个方法,一个是count统计个数,一个是index获取下标

    二、字符串操作

    特性:不可修改

    #字符串的索引与切片
    s = 'sadfwedfasdf'
    #索引
    print(s[0])  #通过索引取第一位字符
    #字符串切片
    print(s[0:4])    #通过切片取前四位 (顾头不顾尾)
    
    print(s[-1])    #通过-1来取字符串的最后一位
    
    print(s[0:])    #取所有的字符
    print(s[:])     #两边什么都不写,也可以取全部
    
    print(s[0:5:2])  #取前五个字符,每两个取一个,2位步长[首:尾:步长]
    
    print(s[4:0:-1])  #通过步长设置-1,吧首尾换一下,来实现字符串倒着写
    
    
    #字符串的操作
    s = 'alExwusir'
    s1 = s.capitalize()    #让字符串首字母大写,其它全部小写
    print(s1)
    s2 = s.upper()    #让字符串全部变成大写
    s21 = s.lower()   #让字符串全部小写
    print(s2)
    s3 = s.swapcase() #让大小写翻转
    print(s3)
    
    t = 'alex egon wusir'
    t1 = t.title()      #让每个特殊字符隔开的单子首字母大写
    print(t1)
    s4 = s.center(20,'#')   #让字符串在20个字符的位置居中显示,空白填充物为#
    print(s4)
    s5 = s.expandtabs()   #如果字符串中有	选项,输出结果自动加上tab的空格
    print(s5)
    s6 = len(s)         #获取字符串长度,元祖,字典,列表同样适用
    print(s6)
    
    #通过前端传来一个字符串,通过判断前边三个字母的不同来进行不同的操作
    s7 = s.startswith('al')   #判断字符串是否已al开头
    s71 = s.startswith('e',2,5)  #判断字符串的第三位到第五位是否是以e开头
    print(s71)
    
    s8 = s.find('l')    #查找字符串中l的索引,找不到则返回-1,可切片在找
    print(s8)
    
    s9 = s.index('l')   #查找字符串中l的索引,找不到则回报错
    print(s9)
    
    s = '*alExwusir% '
    s10 = s.strip()    #去掉字符串中前后所有的空格
    s101 = s.strip('#')  #去掉字符串中前后的#号
    s102 = s.strip('* %') #中间得符号 可以不同,结果也会吧前后的删掉
    s103 = s.rsplit('%')   #删除字符串右边的*号
    s104 = s.lstrip('*')   #删除字符串左边的*号
    print(s103)
    
    s11 = s.count('al')    #统计字符串中有多少个al(可切片在找)
    print(s11)
    
    s = ':alex:egon:wusir'
    s12 = s.split()     #默认以空格为分割符来分割字符串
    s121 =s.split(':')  #已冒号为分隔符来分割字符串
    print(s121)
    
    #format的三种玩法,格式化输出
    s = '我叫{},今年{},爱好{},再说一下我叫{}'.format('name',25,'test','name')
    print(s)
    s1 = '我叫{0},今年{1},爱好{2},再说一下我叫{0}'.format('name',25,'test')
    print(s1)
    s2 = '我叫{name},今年{age},爱好{hobby},再说一下我叫{name}'.format(name='name',age=25,hobby='test')
    print(s2)
    
    #替换
    s = '你说什么就是什么好的哈东西南北东'
    s1 = s.replace('就是','好的哈',1)   #替换字符串中的第一个就是为好的哈
    print(s1)
    
    
    #is系列
    name = 'jjjjoa234'
    print(name.isalnum())    #判断字符串是否有字母或数字组成
    print(name.isalpha())   #判断字符串是否有字母组成
    print(name.isdigit())   #判断字符串是否有数字组成
    
    
    #for循环
    s = 'fhdsklfds'
    for i in s:
        print(i)

    三、字典操作

    字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。

    语法:

    info = {
        'stu1101': "TengLan Wu",
        'stu1102': "LongZe Luola",
        'stu1103': "XiaoZe Maliya",
    }

    字典的特性:

      dict是无序的

      key必须是唯一的,天生去重

    #dict:
    '''
    #数据类型划分:可变数据类型,不可变数据类型
    不可变数据类型:元祖、bool、数字、str      可哈希
    可变数据类型:列表、字典 、集合       不可哈希
    字典的key必须是不可变数据类型,可哈希
    字典的值value可以是任意数据类型
    字典的优势:
        1、二分查找去查询
        2、存储大量的关系型数据
        特点:无序的
    '''
    dic = {
        'name':'张三',
        'age':25,
        'sex':''
    }
    #字典增加
    dic['high'] = 185 #若原字典有high这个key,则会修改原有的值
    dic['age'] = 20
    dic.setdefault('weight',140)  #添加元素,默认值是none
    print(dic)
    
    #字典删除
    dic.pop('weight')    #删除key为weight的键值对,是有返回值的,返回值为键值对的值,如果需删除的key在字典中没有,则会报错
    dic.pop('二哥','没有此键')   #如果添加一个值则就算字典中没有二哥这个key也不会报错
    print(dic)
    
    dic.popitem()    #随机删除一个键值,3.6版本之后从后往前删除
    print(dic)
    
    del dic['name']   #删除键值对
    print(dic)
    #dic.clear()    #清空字典
    
    #字典修改
    dic['age'] = 18  #对值的修改
    print(dic)
    
    dic = {
        'name':'张三',
        'age':25,
        'sex':''
    }
    dic2 = {
        'name':'张三',
        'age':25,
        'sex':'',
        'weight':140,
        'hight':180
    }
    dic2.update(dic)   #把dic更新到dic2,相同的键值对覆盖,没有的添加
    print(dic2)
    
    #字典查找
    print(dic.keys())  #打印字典中的键为一个列表
    print(dic.values()) #打印字典中的值为一个列表
    print(dic.items())  #打印字典中的键值为一个元祖,所有元祖组成一个列表
    for i in dic2:   #什么都不写,默认打印键的值
        print(i)
    for i in dic.items():   #打印键值对
        print(i)
    print(dic['name'])    #打印键对应的值
    
    #字典嵌套
    dic = {
        'name':['alex','wusir'],
        'py9':{
            'time':'1213',
            'xuefei':19800,
            'addr':'CBD'
        },
        'age':21,
    }
    dic['age'] = 56
    dic['name'].append('ritian')
    dic['name'][1] = dic['name'][1].upper()
    dic['py9'].setdefault('女生',6)
    print(dic)

    四、集合操作

    集合是一个无序的,不重复的数据组合,它的主要作用如下:

    去重,把一个列表变成集合,就自动去重了

    关系测试,测试两组数据之间的交集、差集、并集等关系

    s = set([3,5,9,10])      #创建一个数值集合  
      
    t = set("Hello")         #创建一个唯一字符的集合  
    
    
    a = t | s          # t 和 s的并集  
      
    b = t & s          # t 和 s的交集  
      
    c = t – s          # 求差集(项在t中,但不在s中)  
      
    d = t ^ s          # 对称差集(项在t或s中,但不会同时出现在二者中)  
      
       
      
    基本操作:  
      
    t.add('x')            # 添加一项  
      
    s.update([10,37,42])  # 在s中添加多项  
      
       
      
    使用remove()可以删除一项:  
      
    t.remove('H')  
      
      
    len(s)  
    set 的长度  
      
    x in s  
    测试 x 是否是 s 的成员  
      
    x not in s  
    测试 x 是否不是 s 的成员  
      
    s.issubset(t)  
    s <= t  
    测试是否 s 中的每一个元素都在 t 中  
      
    s.issuperset(t)  
    s >= t  
    测试是否 t 中的每一个元素都在 s 中  
      
    s.union(t)  
    s | t  
    返回一个新的 set 包含 s 和 t 中的每一个元素  
      
    s.intersection(t)  
    s & t  
    返回一个新的 set 包含 s 和 t 中的公共元素  
      
    s.difference(t)  
    s - t  
    返回一个新的 set 包含 s 中有但是 t 中没有的元素  
      
    s.symmetric_difference(t)  
    s ^ t  
    返回一个新的 set 包含 s 和 t 中不重复的元素  
      
    s.copy()  
    返回 set “s”的一个浅复制

    五、文件操作

    文件只读
    mode = 'r'
    f = open('模特主妇护士班主任.txt',mode='r',encoding='utf-8')    #打开文件
    cont = f.read()     #读取文件
    print(cont)
    f.close()           #关闭文件
    
    打开非文字的文件或上传下载可用rb模式,已bytes类型模式打开文件
    f = open('模特主妇护士班主任.txt',mode='rb',)
    cont = f.read()
    print(cont)
    f.close()
    
    
    文件只写:对于写,没有此文件,则创建文件,如有文件则清空里边的内容后再添加需要写入的内容
    mode = 'w'
    f = open('log',mode='w',encoding='utf-8')
    f.write('要的,好的哈 ,没问题')
    f.close()
    
    f = open('log',mode='wb')
    f.write('要的,好的哈 ,没问题'.encode('utf-8'))   #使用wb时,在写的时候需要制定文件编码格式
    f.close()
    
    文件追加
    f = open('log',mode='a',encoding='utf-8')  #默认光标在文件最后
    # f.write('fujinkandao de ')
    # f.close()
    #
    # f = open('log',mode='ab',)
    # f.write('ceshi'.encode('utf-8'))
    # f.close()
    
    文件读写也有bytes类型mode='r+b'  ,只会读写,后边不会做操作
    f = open('log',mode='a+',encoding='utf-8')
    cont = f.read()
    f.write("119.84.155.118,123.151.77.12,101.226.226.247,101.226.226.167,61.151.173.71,61.151.186.145,113.96.230.31,123.151.76.43,113.96.230.24,101.226.226.213,119.84.155.78,113.96.230.37,119.84.155.92,113.96.230.63,61.151.186.211,123.151.144.20,61.151.173.78,61.151.186.199,61.151.186.198")
    f.write("119.84.155.118
    123.151.77.12
    101.226.226.247
    101.226.226.167
    61.151.173.71
    61.151.186.145
    113.96.230.31
    123.151.76.43
    113.96.230.24
    101.226.226.213
    119.84.155.78
    113.96.230.37
    119.84.155.92
    113.96.230.63
    61.151.186.211
    123.151.144.20
    61.151.173.78
    61.151.186.199
    61.151.186.198")
    f.write("101.226.212.107
    180.97.117.100
    61.151.168.227
    180.97.117.108
    14.215.140.25
    14.215.140.24
    14.215.140.21
    183.61.38.193
    101.226.76.160
    61.151.168.141
    180.97.117.101
    113.96.232.48
    101.91.63.156
    183.61.38.202
    180.97.9.122
    101.91.63.158
    180.97.8.103
    61.151.183.44
    101.91.63.157
    101.226.90.145
    113.96.232.100
    183.3.233.232
    183.61.38.245
    113.96.232.105
    180.97.117.116
    180.97.9.11
    180.97.117.50
    183.36.108.166
    61.151.206.58
    14.215.140.53
    180.97.9.100
    14.17.41.196
    180.97.9.125
    180.97.9.124
    180.97.9.123
    183.36.108.188
    113.96.208.21
    113.96.208.23
    113.96.208.22")
    f.write("61.151.182.237
    61.151.182.238
    61.151.173.26
    61.151.173.25
    61.151.182.236
    59.36.120.65
    61.151.182.235
    61.151.182.233
    61.151.182.234
    61.151.173.108
    61.151.172.55
    61.151.173.11
    183.3.255.181
    61.151.173.110
    61.151.172.165
    61.151.172.164
    183.3.255.179
    61.151.173.109
    61.151.172.163
    183.3.255.180")
    f.write("119.84.152.100
    101.226.99.191
    183.61.37.191
    183.61.37.193
    14.215.152.171
    14.215.152.170
    123.151.65.110
    123.151.65.111
    123.151.65.112
    119.84.152.36
    123.151.93.77
    180.163.8.14
    123.151.179.102
    180.163.30.155
    180.163.30.156")
    f.close()
    
    文件写读(先清除再写,读的时候也只会从光标的位置读)
    f = open('log',mode='w+',encoding='utf-8')
    f.write('ceshiceshi')
    f.seek(0)    #调整光标到最前面
    cont = f.read()
    print(cont)
    
    文件追加(写读)
    f = open('log',mode='a+',encoding='utf-8')
    f.write('jiaqi')
    f.seek(0)
    print(f.read())
    f.close()
    
    功能详解
    f = open('log',mode='r+',encoding='utf-8')
    cont = f.read(3)   #打印前三个字符,读出来的都是字符
    f.seek(6)      #seek是按照字节定光标的位置,中文一个字为三个字节
    print(f.tell())   #查看现在光标所在的位置
    cont = f.readable()   #判断文件是不是可读的返回true或false
    cont = f.readline()    #一行一行的读,想读第二行
    cont = f.readlines()    #多行读,把所有行读成列表,每行一个元素
    f.truncate(5)    #对源文件截取前五位
    for line in f:
        print(line)
    f.close()
    with open( 'log',mode='r+',encoding='utf-8') as f,open('模特主妇护士班主任.txt') as h: #用这种方法可以不用在文件操作后边写关闭文件,且可以同时打开多个
        print(f.read())
        print(h.read())read
    
    import os
    os.remove('log')    # 删除文件
    os.rename('模特主妇护士班主任.txt','log1')   #修改文件名

    with语句

    为了避免打开文件后忘记关闭,可以通过管理上下文,即:

    with open('log',mode='r',encoding='utf-8') as f:
        #通过对文件句柄f的操作来操作文件
  • 相关阅读:
    持续集成之Jenkins+sonar自动化部署04
    自动化部署03
    自动化部署02
    自动化部署01
    持续集成之代码质量管理-Sonar
    gitlab-ce安装01
    在Centos7.3安装Zabbix3.4.4服务端
    自动化运维之日志系统上线规范(十)
    自动化运维之日志系统Logstash实践(九)
    自动化运维之日志系统Logstash解耦实践(八)
  • 原文地址:https://www.cnblogs.com/hackerlin/p/10820452.html
Copyright © 2011-2022 走看看