zoukankan      html  css  js  c++  java
  • Ptython基础第二天:基础数据类型

    一、引子

        1、什么是数据?
            x = 10, 10是我们要存储的数据
        2、为何数据要区分不同的类型
            数据是用来表示状态的,不同的状态应该使用不同的类型的数据去表示
        3、数据类型
            数字、字符串、列表、元组、字典、集合

    二、基础数据类型

        1、数字:int
            数字主要是用于计算用的,使用的方法并不多,记住一种就可以:
            代码:
      #bit_length() 当十进制表示时,最少使用的位数
      v = 11 # 11 的二进制 'ob1011'
      print(bin(v))
      data = v.bit_length()
      print(data)
      0b1011
      4
      2、布尔值:bool
            布尔值2种:True,False
            True 1 真
            False 0 假
        3、字符串:str
            1、字符串的索引于切片
                索引即下标,就是字符串组成的元素开始从第一个开始,初始索引为0以此类推     
                代码:
      str1 = 'ABCDEFG'
      print(str1[0])
      print(str1[1])
      print(str1[2])
      print(str1[3])
      A
      B
      C
      D
              2、切片就是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串,取值范围:[ )           
                代码:
      str = 'ABCDEFGHIJK'
      print(str[0:11])     #从第一为到最后一位,步长为1
      print(str[0:-1])     #从第一为到最后一位,步长为1
      print(str[0:-1:2])   #从第一为到最后一位,步长为2
      print(str[0:-1:-2])  #
      print(str[-1:0:-2])  #从最后一位到第一位,步长为2
      print(str[11:0:-1])  #从最后一位到第一位,步长为1
      ABCDEFGHIJK
      ABCDEFGHIJ
      ACEGI
    
      KIGEC
      KJIHGFEDCB
       3、字符串常用方法         
      name = 'nZd'
      #captalize, size, swapcase, title
      print(name.capitalize()) #首字母大写
      print(name.swapcase()) #大小写翻转
      Nzd
      NzD
      msg = 'egon say hi'
      print(msg.title()) #每个单词首字母大写
      Egon Say Hi
      #内同居中,总长度,空白处填充
      ret = name.center(20,"*")
      print(ret)
      ********nZd*********
      #字符串中指定元素出现的次数
      name = 'ABCABCabcsdfg'
      #字母A在字符串name中0-4位中出现的次数
      ret = name.count("A",0,4)
      print(ret)
      2
      name = "hqw	"
      #	前面的补全
      #默认将一个tab键变成8个空格,如果tab前面的字符串长度不足8个,则补全8个,如果tab键前面的字符串长度超过8个不足16位则补全16位,以此类推每次补全8个
      ret = name.expandtabs()
      print(len(ret))
      print(ret)
      8
      hqw     
      name = 'dkfjdkfasf54'
      #startswith 判断是否以...开头
      #endswith 判断是否以...结尾
      ret = name.endswith('jdk',3,6)
      print(ret)
      ret = name.startswith('kfj',1,5)
      print(ret)
      True
      True
      name = 'dkfjdkfasf54'
      #寻找字符串中的元素是否存在,如果找到指定元素则返回元素的索引,如果找不到指定元素则返回-1
      ret = name.find('fjdk',1,6)
      print(ret)
      # 如果找到指定元素则返回元素的索引,如果找不到指定元素则报错
      ret = name.index('fjdk',1,6)
      print(ret)
      2
      2
      #split:以什么分割,最终形成一个不包含指定分割符元素的列表
      ret = 'title,Tilte,atre,'.split('t')
      print(ret)
      #rsplit:从后面开始分割,第一个参数为指定分割符,第二参数为分割次数
      ret = 'title,Tilte,atre,'.rsplit('t',1)
      print(ret)
      ret = 'title,Tilte,atre,'.rsplit('t',2)
      print(ret)
      ['', 'i', 'le,Til', 'e,a', 're,']
      ['title,Tilte,a', 're,']
      ['title,Til', 'e,a', 're,']
      #format的三种玩法,格式化输出
      res = '{} {} {}'.format('egon',18,'male')
      print(res)
      res = '{1} {0} {1}'.format('egob',18,'male')
      print(res)
      res = '{name} {age} {sex}'.format(sex='male',name='egon',age=18)
      print(res)
      egon 18 male
      18 egob 18
      egon 18 male
      #strip:去除字符串两边指定的字符,lstrip:去除字符串左边指定的字符,rstrip:去除字符串右边指定的字符
      name = '*egon*'
      print(name.strip('*'))
      print(name.lstrip('*'))
      print(name.rstrip('*'))
      egon
      egon*
      *egon
      #replace:替换字符串中指定的字符内容
      name='alex say :i have one tesla,my name is alex'
      print(name.replace('alex','SB',1))
      print(name.replace('alex','SB',2))
      SB say :i have one tesla,my name is alex
      SB say :i have one tesla,my name is SB
      #is 系列
      name='jinxin123'
      print(name.isalnum()) #字符串由字母或数字组成
      print(name.isalpha()) #字符串只由字母组成
      print(name.isdigit()) #字符串只由数字组成
      True
      False
      False
           
       4、元组:tupe
                元祖被称为只读列表,即数据可以被查询,但不能被修改,所以,字符串的切片操作同样适用于元祖
                例:(1,2,3) ("a","b","c")
     
            5、列表:list
                列表是Python中的基础数据类型之一,其他语言中也有类似于列表的数据列表的数据类型,比如js中叫数组,它是以[]括,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:
       li = ['aliex', 123, Ture, (1,2,3,' wusir'),[1,2,3,' 小明'], {'name' : 'alex'}]
                列表相对于字符串,不仅可以存储不同的数据类型,而且可以存储大量数据,32位Python的限制是536870912个元素,64位Python的限制是 1152921504606846975个元素。而且列表是有序的,有索引值,可以切片,方便取值
                增
      li = [1,'a','b',2,3,'a']
      #按照索引去增加
      li.insert(0,55)
      print(li)
    
      #增加到最后
      li.append('end')
      li.append([1,2,3])
      print(li)
    
      #迭代去增
      li.extend(['q,a,w'])
      li.extend(['q,a,w','aaaa'])
      print(li)
      [55, 1, 'a', 'b', 2, 3, 'a']
      [55, 1, 'a', 'b', 2, 3, 'a', 'end', [1, 2, 3]]
      [55, 1, 'a', 'b', 2, 3, 'a', 'end', [1, 2, 3], 'q,a,w', 'q,a,w', 'aaaa']
                删
      li = [1,'a','b',2,3,'a']
      #按照位置去删除,返回删除的值
      l1 = li.pop(1)
      print(l1)
      print(li)
    
      #按照位置去删除,也可以切片删除,没有返回值
      del li[1:3]
      print(li)
    
      #按照元素去删除
      li.remove('a')
      print(li)
    
      #清空列表
      li.clear()
      print(li)
      a
      [1, 'b', 2, 3, 'a']
      [1, 3, 'a']
      [1, 3]
      []

             改

      li = [1,'a','b',2,3,'a']
      li[1] = 'asdfg'
      print(li)
      li[1:3] = ['f','c']
      print(li)
      li[1:5] = ['f','c']
      print(li)
      [1, 'asdfg', 'b', 2, 3, 'a']
      [1, 'f', 'c', 2, 3, 'a']
      [1, 'f', 'c', 'a']
                查:切片去查,或者循环去查
                其他操作:count、index、sort、reverse
                count:统计某个元素在列表中出现的次数
                index:从列表中找出指定元素的第一个匹配项的索引位置
      a = ['q','w','q','r','t','y']
      print(a.count('q'))
      a = ['q','w','q','r','t','y']
      print(a.index('q'))
      2
      0
                sort:在原位置对列表进行排序
                reverse:将列表中的元素进行反向存放
      a = [2,1,3,4,5]
      a.sort() #它没有返回值,索引
      print(a)
      a.reverse()
      print(a)
      [1, 2, 3, 4, 5]
      [5, 4, 3, 2, 1]
             6、字典:dict
                字典是Python中唯一的映射类型,采用键值对(key-value)的形式存储数据。Python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组
                字典(directory)是除列表以外Python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取
                增
      dic = {}
      dic['li'] = ["a","b","c"]
      print(dic)
      # setdefault 在字典中添加键值对,如果只有键那对应的值是none,但是如果原字典中存在设置的键值对,则他不会更改或者覆盖
      dic.setdefault('k','v')
      print(dic)
      dic.setdefault('k','v1')
      print(dic)
      {'li': ['a', 'b', 'c']}
      {'li': ['a', 'b', 'c'], 'k': 'v'}
      {'li': ['a', 'b', 'c'], 'k': 'v'}
                删
      dic = {'age':12345}
      dic['li'] = ["a","b","c"]
      # pop根据key删除键值对,并返回对应的值,如果没有key则返回默认返回值
      dic_pop = dic.pop("a",'无key默认返回值')
      print(dic_pop)
      
    print(dic)
         
    # 随机删除字典中的某个键值对,将删除的键值对以元组的形式返回(一般删除末尾对)   dic_pop = dic.popitem()   print(dic_pop)   print(dic)   #清空字典   dic_clear = dic.clear()   print(dic,dic_clear)
      无key默认返回值
      {'age': 12345, 'li': ['a', 'b', 'c']}
      ('li', ['a', 'b', 'c'])
      {'age': 12345}
      {} None
                改
      #!/usr/bin/env python
      dic = {"name":"jin","age":18,"sex":"male"}
      dic2 = {"name":"alex","weight":75}
      # 将dic所有的键值对覆盖添加(相同的覆盖,没有的添加)到dic2中
      dic2.update(dic)
      print(dic2)
      {'name': 'jin', 'weight': 75, 'age': 18, 'sex': 'male'}
                查
      dic = {"name":"jin","age":18,"sex":"male"}
      # 没有会报错
      value1 = dic["name"]
      print(value1)
      # 没有返回None
      value2 = dic.get("no")
      print(value2)
      # 没有可以返回设定的返回值
      value2 = dic.get("djffdsafg","默认返回值")
      print(value2)
      jin
      None
      默认返回值
                其他操作
      dic = {"name":"jin","age":18,"sex":"male"}
      item = dic.items()
      print(item,type(item))
      # 这个类型就是dict_items类型,可迭代的
      for i in item:
          print(i)
      dict_items([('name', 'jin'), ('age', 18), ('sex', 'male')]) <class 'dict_items'>
      ('name', 'jin')
      ('age', 18)
      ('sex', 'male')
      dic = {"name":"jin","age":18,"sex":"male"}
      keys = dic.keys()
      print(keys,type(keys))
      for i in keys:
          print(i)
      dict_keys(['name', 'age', 'sex']) <class 'dict_keys'>
      name
      age
      sex
      dic = {"name":"jin","age":18,"sex":"male"}
      values = dic.values()
      print(values,type(values))
      for i in values:
          print(i)
      dict_values(['jin', 18, 'male']) <class 'dict_values'>
      jin
      18
      male
                字典循环
      dic = {"name":"jin","age":18,"sex":"male"}
      print('--------------------------------')
      for key in dic:
          print(key)
      print('--------------------------------')
      for key,value in dic.items():
          print(key,value)
      print('--------------------------------')
      for item in dic.items():
          print(item)
      --------------------------------
      name
      age
      sex
      --------------------------------
      name jin
      age 18
      sex male
      --------------------------------
      ('name', 'jin')
      ('age', 18)
      ('sex', 'male')

    三、其他:for、enumerate,range

            1、 for循环:用户按照顺序循环可迭代对象的内容
      msg = '老男孩python是全国范围内最好的python培训机构'
      for item in msg:
          print(item,end=" ")
      print()
    
      print('--------------------------------')
      li = ['alex','银角','女神','egon','太白']
      for i in li:
          print(i)
      print('--------------------------------')
      dic = {'name':'太白','age':18,'sex':'man'}
      for k,v in dic.items():
          print(k,v)
    
      老 男 孩 p y t h o n 是 全 国 范 围 内 最 好 的 p y t h o n 培 训 机 构 
      --------------------------------
      alex
      银角
      女神
      egon
      太白
      --------------------------------
      name 太白
      age 18
      sex man
            2、 enumerate:枚举,对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
      print('--------------------------------')
      li = ['alex','银角','女神','egon','太白']
      for i in enumerate(li):
          print(i)
      print('--------------------------------')
      for index,name in enumerate(li,1):
          print(index,name)
      print('--------------------------------')
      for index,name in enumerate(li, 100):
          print(index, name)
      --------------------------------
      (0, 'alex')
      (1, '银角')
      (2, '女神')
      (3, 'egon')
      (4, '太白')
      --------------------------------
      1 alex
      2 银角
      3 女神
      4 egon
      5 太白
      --------------------------------
      100 alex
      101 银角
      102 女神
      103 egon
      104 太白
            3、 range:指定范围,生成指定数字
      print('--------------------------------')
      for i in range(1,5):
          print(i)
      print('--------------------------------')
      for i in range(1,5,2):
          print(i)
      print('--------------------------------')
      for i in range(1,5,-2):
          print(i)
      print('--------------------------------')
      for i in range(5, 1, -2):
          print(i)
      --------------------------------
      1
      2
      3
      4
      --------------------------------
      1
      3
      --------------------------------
      --------------------------------
      5
      3

     

  • 相关阅读:
    关于防盗链
    原生php登陆注册
    thinkPHP的D方法和M方法用法和区别
    Python中类与对象的关系
    解决_CRT_SECURE_NO_WARNINGS 警告
    骨头汤、豆浆、海带都不能补钙,最补钙的食物是它
    蘑菇鸡蛋汤
    CString和string在unicode与非unicode下的相互转换(转)
    【CString与string转换】不存在从 "LPWSTR" 转换到 "std::basic_string<char, std::char_traits<char>, std::allocator(转)
    LINK : fatal error LNK1104: 无法打开文件“mfc71.lib”(转)
  • 原文地址:https://www.cnblogs.com/nzd123456/p/8954904.html
Copyright © 2011-2022 走看看