• python基础二(list,tuple元祖、dic字典,字符串)


    一、列表list

    1、list定义

     列表即数组 ,list或array.。列表中的每个元素都有自己的编号,从0开始,编号也可叫做下标,角标,索引。最后一个元素的下标也可用-1表示.:

     list定义时,需要用中括号[]括起来元素,每个元素之间用逗号分隔开。示例:stus=[‘小白’,'小红,‘小明’,'小兰']  元素如果是字符串需要用引号括起来

    2、list操作

     增:

    stus.append('北京')  #在列表末尾增加一个元素
    stus.insert(0,'上海') #在指定的位置增加元素
    stus.extend(list1)#将list1合并到stus中
    stus+list1 #合并list1和stus

    删:

    stus.pop(0) #删除指定位置的元素
    stus.remove('北京') #删除指定的元素
    del stus[2] #删除指定位置元素
    stus.clear()#清空list

    改:

    stus[1]='深圳'# 修改指定位置的元素,但是如果下标不存在,则会报错

    查:

    print(stus[1])#获取指定位置的元素,并打印出来
    print(stus.index('北京'))#获取元素对应的下标,如果元素不存在,下标找不到,会报错
    print()stus.count('深圳'))#获取元素在list中出现的次数

    list反转:

    my_list = ['python','jmeter','charles','postman']
    my_list.reverse() #就是把这个list反转一下,并不会返回任何内容。如果你直接打印会发现,结果显示none :  print(my_list.reverse())
    print(my_list)#显示翻转后的list

     

     list排序:

    可对数值型元素排序也可对字符串型元素排序,默认按升序排序。如果加上参数reverse=True,则按照降序排序

     list合并:

    list的合并,只需要多个list用加号+链接即可

    nums1 = [9,2,34,12,34,457,2342]
    nums = ['b','f','e','z','g','h']
    print(nums1+nums2)#结果就是两个list合并后[9,2,34,12,34,457,2342,'b','f','e','z','g','h']

    如果同一个list中的内容,复制合并,则直接用原来的list*n(n表示次数):

    print(nums1*3),则输出:[9, 2, 34, 12, 34, 457, 2342, 9, 2, 34, 12, 34, 457, 2342, 9, 2, 34, 12, 34, 457, 2342],把原来的nums1重复3次后输出,

    字符串也可以这样用:print('东方大厦'*3),输出:东方大厦东方大厦东方大厦

    3、多维数组

     多维数组就是数组中的元素仍是数组。维数根据数组嵌套层次计算:

    stus=['aaaa','bbbb','cccc','dddd','eeee','ffff',['ggg','hhh'],'jjjjj']#这就是一个2维数组

    stus=['aaaa','bbbb','cccc','dddd','eeee','ffff',['ggg','hhh',[2323,45455]],'jjjjj']#这就是一个3维数组,最外层是stus[],第二层是['ggg','hhh',[2323,45455]],第三层是[2323,45455]

    多维数组的取值:根据下标逐层取:

    比如上例要取最里层的45455,一层一层深入,首先45455在最内层[2323,45455]的1位置(或者-1位置),然后最内层在第二层['ggg','hhh',[2323,45455]]的2位置,第二层整体在最外层的6位置,所以最终结果为stus[6][2][1]或者stus[6][-1][-1],最后一个元素也可用-1取

    4、循环遍历数组

      一维数组:

    for var in words:   #var此时代表的就是words中的每个元素
        print var
    #第二种方法
    for i in range(5) #i表示循环次数,从0开始,同时也充当words的下标
        print(words[i])

    多维数组

    words=['1','sdf ','3232','ddsdff','fffdfdf',[1,2,4,'dsfsd']]
    #如果想要遍历所有元素,包括内置的list[1,2,4,'dsfsd']的所有元素。则在遍历words的时候,可以做一下判断,当words的元素类型为list时,再次循环
    
    for name in words:
        if type(name)==list:  #判断一个变量的类型,是否是list
            for i in name:   #如果是list,继续遍历该变量
                print(i)   
        print(name)
    
    

    5、切片   

    # 切片是list取值的一种方式,可一次取出多个元素
    nums=['12','34','sdf','fere','dsfds']
    print(nums[1:3]) #取出下标从1开始至2的元素,即:nums[1]nums[2],顾头不顾尾,nums[3]的取不到
    print(nums[1:]) #取值从下标1开始,到结束。如果从某个下标开始取,取到末尾结束,那么末尾的下标可以省略不写
    print(nums[:3]) #取值从下标1开始,到下标1.如果是从头开始取,取到后面某个下标结束,那么开头的下标可以不写
    print(nums[:]) #取所有的

    #如果想有规律的隔几个取一个,则可以加上步长
    例:lis=[1,2,3,4,5,6,7,8,9]      print(lis[::2]) #步长是2,结果是1,3,5,7,9
    这里步长是正数,则按照从左往右依次取,如果步长为负数,则需要从右往左取值:
    print(lis[::-1]) #步长是负数,反向取,结果是9,8,7,6,5,4,3,2,1
    这个反转取值,是会产生一个新的list,在原来list的基础上反向,并不会改变原来list的顺序,此时如果你继续输出print(lis),会发现,并没有任何变化
    
    但是如果用reverse函数,那就回改变原有list的值:
    lis.reverse()  print(lis)#此时,lis输出顺序就是反向的
    切片同样适用于字符串:
    s='abcdefg'
    print(s[:3]) #输出abc,下标从开始到2,顾头不顾尾,所以下标3取不到

    6、元组

    元祖也是一种list,但他和list的区别在于,元祖里面的元祖不可修改。元组定义的格式是用一个小括号括起来所有的元素,元素中间用逗号分隔,需要注意的是,如果元祖中只有1个元素,则需要在最后加一个逗号

    例:yuanzu=(1,2,3,4,5,'wewew')  

           yuanzu=(1,)#只有一个元素,要加上逗号

    相关操作和list一样:

      print(yuanzu.index('wewew')) #找到元素的下标

      print(yuanzu.count('wewew')) #找到元素的个数

      元祖只有index和count方法,元祖的元素不可变更,修改增加都不行:
      如果yuanzu[3]=43,会提示错误 TypeError: 'tuple' object does not support item assignmen


    7、字典

     字典是一种通过名字或者关键字引用的得数据结构,其键可以是数字、字符串、元组,为key-value格式,取数据非常方便,而且速度很快。

    字典的定义用大括号{}将元素括起来,里面是一对一的键值对key-value.,key和value之间用冒号分隔

    例:infos = {'name':'小红','sex':'女','addr':'北京','age':15} #name,sex,addr,age是key, 小红,女,北京,15是对应的value

       1、字典操作:

      增加

    #
    infos['phone']=13611087045 #通过指定key来增加,但是如果key原本就存在,就会修改原来key值.如果key不存在,会新增一对key-value
    注意:对于嵌套字典,这种方式新增key-value时,外层的key必须存在,否则会出错
    infos.setdefault('phone','13611087045')#但是如果用setdefault方法,key值原本就存在的话,是不会改变原来的值

    infos.setdefault('name','使劲地激发')#不会改变原来的值,print(infos['name'])的结果还是小红 infos['name']='熊阿兰' #会改变原来的值,print(infos['name'])#输出结果就是熊阿兰
    infos.update(set1)# 将set1字典的元素,加入到infos字典中,如果key有重复的,则覆盖

    改:

    修改的话,就直接调用key修改即可:infos['name']='熊阿兰'

    删:

    infos.pop('name') #指定key来删除
    infos.popitem() #随机删除一个key
    del infos['phone'] #指定key来删除
    infos.clear()  #清空字典

    查:

    print(infos.get('phone'))#取不到这个key的话,就是None
    print(infos.get('phone',110))#如果取不到这个key的话,默认就是110
    print(infos['phone'])#如果key不存在会报错,所以一般不用这个

    print(infos.values())#获取到字典所有的value

    print(infos.keys()) #获取到字典所有的key
    print(infos.items()) # 获取字典所有的k-v
    #如果字典多层嵌套,想要取字典中某个value时,方法同list,一层一层深入取值
    people = {
    '小红':{
    'age':18,
    'class':'二年一班'
    'shoes':['nike','addis','lv','chanle']
    }}
    要想取到lv,则 people['小红']['shoes'][2]
    1、先people['小红']取到key 小红对应的value:
      {
    'age':18,
    'class':'二年一班'
    'shoes':['nike','addis','lv','chanle']
    }

    2、 然后再用[shoes]取到key shoes对应的values:['nike','addis','lv','chanle']
    3、然后这是一个数组,所以用索引[2]取到对应的lv,综上
    people['小红']['shoes'][2]
    
    
     

    循环字典:

    #直接循环一个字典的话,那么循环的是字典的key
    for p in infos:
      print(p)#书出来是people中的所有key
    for k,v in infos.items(): #循环的时候,同时取key和value
    print(k,'======》',v)

    8、常用的字符串方法

    如下,需要用时,直接参考使用

    a='   字 符 串    
    
    
    
    
    '
    c = a.strip()  #默认去掉字符串两边的空格和换行符
    c= a.lstrip()  #默认去掉字符串左边的空格和换行符
    c = a.rstrip() #默认去掉字符串右边的空格
    print('c...',c)
    print('a...',a)
    
    words = 'http://www.nnzHp.cn'
    print(words.strip('day')) #如果strip方法指定一个值的话,那么会去掉这两个值
    print(words.count('a'))  #统计字符串出现的次数
    print(words.index('z'))  #找下标,如果元素找不到的话,会报错
    print(words.find('z')) #找下标,如果元素找不到的话,返回-1
    print(words.replace('day','DAY'))  #替换字符串
    print(words.isdigit()) #判断字符串是否为纯数字
    print(words.startswith('http')) #判断是否以某个字符串开头
    print(words.endswith('.jpg')) #判断是否以某个字符串结尾
    print(words.upper())  #变成大写的
    print(words.lower())  #变成小写的
    
    username = 'abcdefADS12345@#¥'
    print(username.isalpha())  #判断字符串是否全为字母和汉字
    print(username.isalnum()) #判断是否包含汉字,字母和数字,它是只要有没有特殊符号就返回true

      print(a.islower()) #是否全都是x小写字母
      print(a.isupper()) #是否全都是大写字母

    
    

    join方法:用特定的字符,将可循环的数据类型链接起来,比如list,字符串等,

    如下两个例子

    split(‘,’):根据某个字符串,分割字符串,什么也不传的话,是以空格分割的。最终返回一个list

     

    字符串格式化:format

    字符串格式化有两种方式,第一种就是前面写的%s %d占位符方式:

    import datetime
    name='zhangyoa'
    date=datetime.date.today()
    print('%s你好,欢迎你登陆,今天的日期是%s'%(name,date))
    这种方式要求前面的占位符跟后面跟着的变量要一一对应,如果碰到变量比较多的情况,就比较麻烦,要对准哪个对应哪个。

     第二种方式就是用字符串的format函数

    str.center()方法:让字符串居中显示,可以规定总长度,长度不够,用字符代替

    'str' .zfill(n)方法:将用0将字符串str补充至长度为n,

    print('1'.zfill(4))#输出结果就是0001


     9、string模块的常用方法

    使用string模块的方法之前,先要导入该模块,import string

    import string
    string.ascii_letters#所有的大小写字母
    string.ascii_lowercase#所有的小写字母
    string.ascii_uppercase#所有的大写字母
    string.punctuation#所有的符号
    string.digits#所有的数字

     

  • 相关阅读:
    macOS Sierra 如何打开任何来源
    centos 安装git服务器,配置使用证书登录并你用hook实现代码自动部署
    Linux下修改Mysql的用户(root)的密码
    mysql主从复制
    CentOS7下安装MySQL5.7安装与配置
    gulp安装和使用
    libiconv库的安装和使用
    Android 开发中常见的注意点
    扯一扯 C#委托和事件?策略模式?接口回调?
    Python 学习开篇
  • 原文地址:https://www.cnblogs.com/bendouyao/p/8650526.html
Copyright © 2020-2023  润新知