python-数据类型补充

1、is和==

  • == 比较的对象是变量的值
  • is 比较的对象是内存地址
    • id(variable) 返回变量的内存地址
In [34]: num1 = 1000

In [35]: num2 = 1000

In [36]: num1 == num2
Out[36]: True

In [37]: num1 is num2
Out[37]: False
  • 小数据池(在终端中规则一致)
    • 数字范围为-5~256时,所有变量地址相同(该数值范围在不同IDE不一定相同)
    • 字符串中如果有特殊字符,则两个相同字符串地址不同(同样在不同IDE中结论不同)
    • 字符串单个*20以内则地址相同
In [26]: num1 = 10

In [27]: num2 = 10

In [28]: num1 == num2
Out[28]: True

In [29]: num1 is num2
Out[29]: True

In [30]: s1 = 'aaa'

In [31]: s2 = 'aaa'

In [32]: s1 == s2
Out[32]: True

In [33]: s1 is s2
Out[33]: True

2、解构

  • 字符串,元组,列表均可解构

  • 例子:

    In [38]: s = '123'
    
    In [39]: n1, n2, n3 = s
    
    In [40]: print(n1,n2,n3)
    1 2 3
    
    • 其它类型解构也一样,注意元素个数的匹配,必须相同

3、类型转换

  • 类型转换的函数为int(), str(),...

  • bool() 转换的内容为空时为false,对于非空的东西均为true

    In [41]: n = 0  # int类型的0表示空
    
    In [42]: s1 = ' ' 
    
    In [43]: s2 = '' 
    
    In [44]: l = []
    
    In [45]: bool(n)
    Out[45]: False
    
    In [46]: bool(s1)
    Out[46]: True
    
    In [47]: bool(s2)
    Out[47]: False
    
    In [48]: bool(l)
    Out[48]: False
    

4、其它

  • 字符串和列表的互相转换:join和split

    In [50]: '**'.join(['a', 'b', 'c'])
    Out[50]: 'a**b**c'
    
    In [51]: 'a**b**c'.split('**')  # 当不加参数时,默认为以空格为分隔符
    Out[51]: ['a', 'b', 'c']
    
    • join()的对象是可迭代对象,在可迭代对象的各个元素间添加指定的字符串
  • 列表删除

    • lis.clear()

    • for + lis.remove(element)

    • 注意:在迭代中使用remove时,每删除一个元素,列表的元素索引都会改变,即直接使用
      for+remove无法遍历到所有元素,正确迭代删除列表的例子如下

      list1 = [1, 2, 3, 4]
      new_list = []
      for ele in list1:
          new_list.append(ele)
      for ele in new_list:
      	  list1.remove(ele)
      
      • 先用一个新列表记录原列表,再迭代新列表,通过新列表来改变原列表的内容(因为这样改变的是原列表的内容,但迭代的是新列表,所以新列表的索引不会改变,就不会出错)
  • 字典的知识补充

    • 字典在循环自己是不允许改变字典的长度(增删)

    • fromkeys直接使用类名对字典访问,不会对原字典产生影响,返回一个新字典

      • 注意:fromkeys的第二个变量是通过地址访问,即新返回的字典的value都指向同一个列表
      In [52]: ret = dict.fromkeys("123", [1, 2, "a"])
      
      In [53]: ret
      Out[53]: {'1': [1, 2, 'a'], '2': [1, 2, 'a'], '3': [1, 2, 'a']}
      
      In [54]: id(ret['1']) == id(ret['2']) == id(ret['3'])
      Out[54]: True
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值