• Python学习日记(四)——Python基本数据类型梳理(int、str、list、tuple、dict)


    数字(int)

    1、创建方式

    n1 = 123
    n2 = int(123)

    2、内存分配

    #共同用一个内存地址的情况
    n1 = 123
    n2 = n1
    
    #用两个内存地址的情况
    n1 = 123
    n2 = 123
    。。。。
    n100 = 123#如果有许多变量的值都相同,会造成浪费空间的问题
    
    #在别的编程语言中都会占用两个内存地址,但是python进行了优化
    #在 -5 ~ 257范围内的数,及时使用第二种写法,也会共同用一个内存地址
    #查看内存变量地址:id(变量名)
    >>> n1 = 123
    >>> n2 = 123
    >>> id(n1)
    47016816L
    >>> id(n2)
    47016816L
    #可以看出内存地址是相同的
    
    >>> n1 = 1234
    >>> n2 = 1234
    >>> id(n1)
    52706152L
    >>> id(n2)
    52706128L
    #可以看出内存地址是不相同的

    3、长度限制

      32位系统:-2**31 ~ 2*31 - 1

      64位系统:-2**63 ~ 2*63 - 1

    验证长度限制
    >>> n2 = 2147483648
    >>> n2
    2147483648L
    
    >>> n2 = 2147483647
    >>> n2
    2147483647
    
    >>> n2 = -2147483648
    >>> n2
    -2147483648
    
    >>> n2 = -2147483649
    >>> n2
    -2147483649L
    
    #在python3中,没由long了,int自己就是无限大的
    #后面有L代表着是长整型(Long),长整型的大小——内存有多大,数值就能多大

     

    字符型(str)

    1、创建方式

    s1 = "deborah"
    s2 = str('deborah')
    

    2、特有功能

    #strip     ()——两端去除空格
    #startswith()——以什么什么开头
    #endswith  ()——以什么结尾
    #find      ()——找子序列,一个字符或多个字符都可
    #replace   ()——将字符串中的某子序列替换成指定的值
    #upper     ()——变大写(验证码)
    #is...       ——判断是什么什么吗        
    

    3、公共功能

    • 索引——只能取一个元素
    • 切片——可以取多个元素
      li = "deborah"
      print(li[2])
      #输出结果:b
      
      print(li[2:4])
      #输出结果:bo
      #还是字符
    • len——计算长度
        Python3中按字符来计算长度
    • for
        Python3中按字符来计算长度
    • for循环中的编码问题
      name = "希里"
      for i in name:
          print(i)
          bytes_list = bytes(i,encoding='utf8')    #bytes()将字符串转换称为字节
          print(bytes_list)
      #字节默认16进制
      #for循环时,输出每一个字节默认用十进制显示   
           for b in bytes_list:
              print(b,bin(b))
      """
      输出结果
      希
      b'xe5xb8x8c'   #十六进制
      229 0b11100101    #十进制 二进制
      184 0b10111000
      140 0b10001100
      里
      b'xe9x87x8c'
      233 0b11101001
      135 0b10000111
      140 0b10001100
      """
      	1、python3中for循环时以字符为元素进行循环的
      	2、字符 => 字节
      		bytes("字符串",encoding='utf-8')
      			utf-8 => 汉字占三个字节
      			  gbk => 汉字占两个字节
      		print(bytes_list)  	#默认每一个字节都是16进制表示
      		for b in bytes_list:
      			print(b)		#默认每一个字节都是10进制表示
      	3、10进制的数转换成二进制
      		bin(10进制的数字)  

    4、bytes和str的转换

    a = "希里"
    #将字符串转换成字节
    b1 = bytes(a,encoding='utf-8')
    b2 = bytes(a,encoding='gbk')
    print(b1)
    print(b2)
    #将字节转换成字符串
    newa1 = str(b1,encoding='utf-8')
    print(newa1)
    newa2 = str(b2,encoding='gbk')
    print(newa2)  

    列表(list)

    1、创建方式

    li = [11,22,33,44] 
    li = list([11,22,33,44])
    

    2、转换 

    class list(object):
        """
        list() -> new empty list
        list(iterable) -> new list initialized from iterable's items
        """
    #iterable可迭代的,可以被for循环就是可迭代iterable的
    
    #1、字符串转换成为列表
    s1 = "希里"
    l1 = list(s1)  #list会执行for循环,将循环的每一个元素,当做列表的元素
    print(l1)
    #输出结果:["希","里"]
    
    #2、元组转换成为列表
    #元组可以被for循环,同理元组也可以转换成列表
    t2 = ("prime","ciri","ellie")
    l2 = list(t2)
    print(l2)
    #输出结果:['prime', 'ciri', 'ellie']
    
    #3、字典转换成为列表
    #字典 也可以被循环,所以字典也可以被转换成列表
    dic = {'k1':"prime",'k2':"ciri"}
    l3 = list(dic)
    print(l3)
    l3 = list(dic.values())
    print(l3)
    l3 = list(dic.items())
    print(l3)
    """
    输出结果:
    ['k1', 'k2']
    ['prime', 'ciri']
    [('k1', 'prime'), ('k2', 'ciri')]
    """
    

    3、多层嵌套

    li = ["123",123,{"k1":"ciri","k2":{"kk1":(11,22,123),"kk2":"vv2"}}]
    print(li[2])
    print(li[2]["k2"])
    print(li[2]["k2"]["kk1"])
    """
    输出结果:
    {'k1': 'ciri', 'k2': {'kk1': (11, 22, 123), 'kk2': 'vv2'}}
    {'kk1': (11, 22, 123), 'kk2': 'vv2'}
    (11, 22, 123)
    """

    4、特有功能

    append ——追加,在原来列表中进行追加
    clear  ——清除
    extend ——批量增加,扩展自己,拿另外一个可迭代的东西(str、list、tuple、dict),扩展到自己里面来	
    reverse——翻转,自己内部元素翻转
    insert ——向指定位置插入指定元素
    
    #什么时候会自身进行改变,什么时候会生成新的东西? #一般str字符串,执行一个功能,会生成一个内容,原来的内容不变 #list、tuple、dict,执行一个功能,自身会进行变化

    5、公共功能

    • 索引
    • 切片
      li = ["ciri","ellie","prime",'123']
      print(li[2])
      #输出结果:prime
      print(li[2:3])
      #输出结果:['prime']
      #取出来的是列表,自己原来是什么类型,取出来的就是什么类型  
    • len

    • for

    元组(tuple)  

    1、创建方式

    ages = (11, 22, 33, 44, 55)
    ages = tuple((11, 22, 33, 44, 55))
    

    2、特有功能

    #count——计算元素出现的个数
    #index——获取指定元素的索引位置
    

    3、多层嵌套(元素不可修改) 

    t = (11,22,["alex",{"k1":"v1"}])
    print(t[2][1]['k1'])
    #输出结果:v1
    

    4、元组的特性——(元组的元素不可被修改,元素的元素 可以 被修改)  

      元组的——儿子不能变
      元组的——孙子可以变

    5、嵌套修改

    t = (11,22,["alex",{"k1":"v1"}])
    #更改元素的元素的值
    t[2][1]['k2'] = 123
    print(t)
    
    #字典的更新1——update命令
    dic = {'k1':'v1','k2':1}
    dic.update({"k3":123})
    print(dic)
    
    #字典的更新2——给不存在的键赋值
    dic['k4'] = 'v4'
    print(dic)  

    字典(dict)

    1、创建方式

    person = {"name": "mr.hou", 'age': 18}
    person = dict({"name": "mr.hou", 'age': 18})
    person = dict(name='mr.hou',age=18)
    

    通过列表创建字典

    li = [11,22,33]
    
    # new_dict = dict(li)
    # print(new_dict)
    # 会报错因为列表循环时只有一个值
    
    #复杂方法
    dic = {}
    for i,v in enumerate(li,10):
        dic[i] = v
    print(dic)
    
    #一句话创建
    new_dict = dict(enumerate(li))
    print(new_dict)

    2、特有功能

    #keys()  ——获取所有的键key
    #values()——获取所有的值value
    #items() ——获取所有的键值对
    #pop()   ——获取并在字典中移除,可以传参数,移除指定的值
    #get()   ——根据key获取值
    #update()——更新
    

     

  • 相关阅读:
    ABP框架理论学习之Debugging
    探索博客园的“打赏”模式
    P3382 【模板】三分法
    1020.数字识别
    洛谷 P1162 填涂颜色
    在windows命令行批量ping局域网内IP
    1154:LETTERS
    百炼 2790:迷宫
    洛谷 P1605 迷宫
    2012年NOIP普及组 摆花
  • 原文地址:https://www.cnblogs.com/houzhaohui/p/7307413.html
Copyright © 2020-2023  润新知