python中os与sys两模块的区别,pycharm与python的区别

  python中os与sys两模块的区别,pycharm与python的区别

  收集

  Collections是Python内置的集合模块,它提供了许多有用的集合类。

  命名模板

  我们知道元组可以表示一个不变集。例如,一个点的二维坐标可以表示为:

  p=(() 1,2))))))))))))).

  但是这个元组是用来表示一个坐标的,如果看1和2就很难理解。

  在定义和夸大类时,Namedtuple就派上了用场:

  fromcollectionsimportnamedtuple

  point=namedtuple(point ,[x , y]).

  p=点(1,2)).

  p.x

  一个

  p.y

  2

  Namedtuple是创建自定义元组对象的函数,可以指定元组元素的个数,引用属性中的元组元素,而不是索引。

  因此,使用namedtuple,您可以轻松定义具有元组不变性并且可以基于属性引用的数据类型。

  确保您可以创建的点对象是一个元组种子类。

  例(p,点))。

  真实的

  例(p,tuple))。

  真实的

  同样,如果一个圆要用坐标和半径来表示,也可以用namedtuple来定义。

  NamedTuple((名称,[属性列表]):

  circle=命名元组( circle ,[x , y , r]

  双端队列

  使用list存储数据时,通过索引访问元素速度很快,但是插入和删除元素速度很慢。由于链表是线性存储的,在数据量较大的情况下,插入和删除效率不高。

  Deque是双向链表,适用于队列和栈,可以有效地执行插入和删除操作。

  从集合中导入队列

  q=deque([a , b , c]

  q.append(x )))).

  q .应用左(y))。

  q

  dke([ y , a , b , c , x]

  Deque支持list的append(和pop)(和appendleft())和popleft()),所以可以非常有效地添加和删除头中的元素。

  违约迪克

  使用dict时,如果引用的键不存在,就会抛出一个KeyError。如果该项不存在,使用defaultdict返回默认值。

  fromcollectionsimportdefaultdict

  DD=默认字典(lambda: n/a )

  dd[key1]=abc

  Dd[key1] # key1存在

   abc

  Dd[key2] # key2不存在。恢复默认值。

  不适用

  注意,默认值是通过调用函数返回的,该函数是在创建defaultdict对象时传递的。

  defaultdict的行为与dict完全相同,只是在键不存在时返回默认值。

  订购的CD

  使用dict时,键是乱序的。当重复dict时,我们不能决定键的顺序。

  要保持密钥的顺序,请使用有序的CD。

  fromcollectionsimportordereddict

  d=dict()、a)、1)、b)、2)、c)、3)

  d # dict的键有问题。

  {a: 1, c: 3, b: 2}

  Od=有序磁盘((a),1,(b),2,(c),3))

  od # ordered直接键已订购

  # Ordered CD()),A),1),B),2),C),3))

  请注意,有序目录中的键是按插入顺序排序的,而不是键本身:

  gt;od=OrderedDict()

  od[z]=1

  od[y]=2

  od[x]=3

  List(od.keys()) #按插入键的顺序返回

  [z , y , x]

  OrderedDict可以实现FIFO(先进先出)字典。当容量超过限制时,最早添加的密钥将首先被删除:

  从集合导入订单直接

  LastUpdatedOrderedDict类(OrderedDict):

  def __init__(self,capacity):

  super(LastUpdatedOrderedDict,self)。__init__()

  自我。_容量=容量

  def __setitem__(self,key,value):

  如果Key在self else 0中,则containsKey=1

  if len(self) - containsKey=self。_容量:

  last=self.popitem(last=False)

  打印(删除:,最后一个)

  如果包含密钥:

  del self[key]

  print(set:,(key,value))

  否则:

  打印(添加:,(键,值))

  OrderedDict。__setitem__(自身,关键字,值)

  计数器

  Counter是一个简单的计数器,例如,计算出现的字符数:

  从集合导入计数器

  c=计数器()

  对于“编程”中的ch:

  .c[ch]=c[ch] 1

  .

  c

  计数器({g: 2, m: 2, r: 2, a: 1, i: 1, o: 1, n: 1, p: 1})

  Counter实际上是dict的一个子类。从上面的结果可以看出,字符‘g’、‘m’和‘r’各出现两次,其他字符各出现一次。

  总结

  集合模块提供了一些有用的集合类,可以根据需要进行选择。

  Base64

  Base64是一种用64个字符表示任意二进制数据的方法。

  用记事本打开exe、jpg、pdf等文件时,我们都会看到很多乱码,因为二进制文件中包含了很多无法显示和打印的字符。因此,如果像记事本这样的文本处理软件要能够处理二进制数据,它需要一个从二进制到字符串的转换方法。Base64是最常见的二进制编码方法。

  Base64的原理很简单。首先,准备一个64个字符的数组:

  [A , B , C ,甲,乙,丙,0, 1, , /]

  然后对二进制数据进行处理,每三个字节进行分组,共3x8=24bit,分为四组,每组正好6位:

  这样我们得到四个数作为索引,然后查表得到对应的四个字符,就是编码后的字符串。

  所以Base64编码会把3字节的二进制数据编码成4字节的文本数据,长度会增加33%。优点是编码后的文本数据可以直接显示在邮件正文、网页等中。

  如果要编码的二进制数据不是3的倍数,最后会剩下1或2个字节怎么办?Base64在末尾补充了\x00字节,然后在代码末尾加一两个=号,表示补充了多少字节。解码时会自动删除。

  Python内置的base64可以直接编解码base64:

  导入base64

  base64 . b64 encode(b binary \ x00 string )

  bYmluYXJ5AHN0cmluZw==

  base64 . b64 decode(b ymluyxj 5 Ahn 0 cmluzw==)

  b 二进制\字符串

  由于字符和/可能出现在标准的base64编码之后,它们不能直接用作URL中的参数,所以有另一种“url safe”的Base64编码,它实际上将字符和/改为-和_:

  base64 . b 64 encode(b I \ xb7 \ x1d \ xfb \ xef \ xff )

  babcd //

  base64 . URL safe _ b 64 encode(b I \ xb7 \ x1d \ xfb \ xef \ xff )

   babcd - __

  base64 . URL safe _ b64 decode( ABCD-_ _ )

   bi\xb7\x1d\xfb\xef\xff

  你也可以自己定义64个字符的排列顺序,这样就可以自定义Base64编码了,但一般来说根本没必要。

  Base64是一种通过表查找的编码方法,不能用于加密,即使使用自定义编码表也是如此。

  Base64适用于编码小块内容,如数字证书签名、Cookie内容等。

  由于=字符也可能出现在Base64编码中,但在URL和Cookie中使用=会造成歧义,因此许多Base64编码会删除=:

  #标准Base64:

  abcd - YWJjZA==

  #自动移除=:

   abcd - YWJjZA

  去掉=,怎么解码?因为Base64将3个字节变为4个字节,所以Base64编码的长度始终是4的倍数。所以需要加=把Base64字符串的长度变成4的倍数,就可以正常解码了。

  总结

  Base64是一种任意二进制到文本的字符串编码方法,常用于在URL、Cookie和网页中传输少量二进制数据。

  练习

  请编写一个base64解码函数来处理删除=

  每日问答-程序员问答分享平台-解决程序员问题快人一步,1024dada.com。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: