一、分别取出大于66的数字和小于66的数字

小练习:需求要求有一个列表列表中存着一组数字,要求将大于66的数字和小于66的数字分别取出来

aa = [11,22,33,44,55,66,77,88,99,90]

dic = {}

for i in aa :

    ifi <= 66 :

        if 'k1' in dic.keys():

            dic['k1'].append(i)

        else:

            #创建只有一项元素的列表

          
dic['k1'] = [i,]   #为了规范请使用逗号

    else:

        if 'k2' in dic.keys():

            dic['k2'].append(i)

        else:

            dic['k2'] = [i,]

print(dic['k1'])

print(dic['k2'])

#k1和k2就分别保存了大于66和小于66的结果

 

二、collections系列

(1)Counter计数器

Counter是对字典类型的补充,用于追踪值的出现次数。

ps:具备字典的所有功能 + 自己的功能

例子:
import collections
f1 = collections.Counter('asdwqewqdsadsadsa')
print(f1)
结果:
Counter({'a': 4, 'd': 4, 's': 4, 'q': 2, 'w': 2, 'e': 1})
#这个例子就是统计出元素出现的次数

2)有序字典class OrderedDict(dict):

orderdDict是对字典类型的补充,他记住了字典元素添加的顺序,从而使字典变得有序

例子:

import collections
f1 = collections.OrderedDict()
f1["a"] = 3
f1["c"] = 2
f1["b"] = 1
f2 = {}
f2["a"] = 3
f2["c"] = 2
f2["b"] = 1
print(f1,f2)

结果:OrderedDict([('a', 3), ('c', 2), ('b', 1)]) {'b': 1, 'c': 2, 'a': 3}

从上面就可以发现,想同值的字典使用OrderedDict就按照添加顺序进行排序

内部机制:

在正常的字典中f2这么排序的:

f2 = {'b': 1, 'c': 2, 'a': 3}

而使用OrderedDict后他会生成一个列表来保存字典添加的顺序

f1 = {'b': 1, 'c': 2, 'a': 3}

f1_list = ["a","c","b"]

这样就可以通过for循环来得到有序的字典

不要较真哈

(3)默认字典(defaultdict)

defaultdict是对字典的类型的补充,他默认给字典的值设置了一个类型。

import collections
f1 = collections.defaultdict(list)
f1["a"].append(1)
print(f1)
上面的和下面的效果相等,所以defaultidict是把value值设置成默认为list类型也就是列表类型
f1 = {}
f1["a"] = []
f1["a"].append(1)
(4)可命名元组namedtuple

也就是将值提前起个名字,然后传值,主要用于平面图想x,y轴

import collections

atuple = collections.namedtuple("atuple",['x','y','z'])
new = atuple(1,2,3,)
print(new)
atuple(x=1, y=2, z=3)
(5)双向队列collections.deque

双向队列为,例如有一个列表,这个列表呢 可以从左面和右面取数据,也可以从左面和右面同时加数据

方法:

(1)def append(self, *args, **kwargs): 添加右侧
      # real signature unknown
           """ Add an element to the right side of the dequ
‘. """
           
pass
(2)def appendleft(self, *args, **kwargs): 添加到队列的左侧
           # real signature unknown
            """ Add an element to the left side of the deque. """
            
pass
(3)clear(self, *args, **kwargs): 清除
  real signature unknown
   "" Remove all elements from the deque. """
   
ass
(4)f count(self, value): 元素出现的的个数
   real signature unknown; restored from __doc__
     """ D.count(value) -> integer -- return number of occurrences of value """
    
return 0
(5)def extend(self, *args, **kwargs):扩展右添加
   # real signature unknown
     """ Extend the right side of the deque with elements from the iterable
"""
    
pass
(6)def extendleft(self, *args, **kwargs): 扩展左添加
    # real signature unknown
     """ Extend the left side of the deque with elements from the iterable """
    
pass
(7)def pop(self, *args, **kwargs): 从右侧取出元素
   # real signature unknown
     """ Remove and return the rightmost element. """
    
pass
(8)def popleft(self, *args, **kwargs):从左侧取出元素
    real signature unknown
     """ Remove and return the leftmost element. """
    
pass
(9)def remove(self, value): 删除指定元素
   # real signature unknown; restored from __doc__
     """ D.remove(value) -- remove first occurrence of value. """
    
pass
(10)def reverse(self): 翻转
    # real signature unknown; restored from __doc__
     """ D.reverse() -- reverse *IN PLACE* """
    
pass

三、单向队列Queue

    q =Queue.Queue(10) 创建单向队列,括号中为队列中可放入元素的个数
    q.put 添加元素
    q.get 取出元素
  • 队列的特点:谁先进入谁先出去
  • 栈的特点:弹夹结构,后加的先出

python成长之路第二篇(4)_collections系列的更多相关文章

  1. Python成长之路第二篇(1)_数据类型内置函数用法

    数据类型内置函数用法int 关于内置方法是非常的多这里呢做了一下总结 (1)__abs__(...)返回x的绝对值 #返回x的绝对值!!!都是双下划线 x.__abs__() <==> a ...

  2. Python成长之路第二篇(3)_字典的置函数用法

    字典的置函数用法(字典dict字典中的key不可以重复) class dict(object): """ dict() -> new empty dictionar ...

  3. Python成长之路第二篇(2)_列表元组内置函数用法

    列表元组内置函数用法list 元组的用法和列表相似就不一一介绍了 1)def append(self, p_object):将值添加到列表的最后 # real signature unknown; r ...

  4. Python人工智能之路 - 第二篇 : 算法实在太难了有现成的直接用吧

    本节内容 预备资料: 1.FFmpeg: 链接:https://pan.baidu.com/s/1jonSAa_TG2XuaJEy3iTmHg 密码:w6hk 2.baidu-aip: pip ins ...

  5. Python成长之路第一篇(4)_if,for,while条件语句

    有了以上的基本基础,已经上面写的几个小练习,大家肯定有很多的不满,比如查询为什么查询一次就退出了呢?下面我们来学习条件语句 一.万恶的加号 以前我们在print的时候如果要加上变量都有是使用+来作为连 ...

  6. Python成长之路第一篇(2)-初识列表和元组

    可以将列表和元组当成普通的“数组”,他能保存任意数量任意类型的Python对象,和数组一样都是通过数字0索引访问元素,列表和元组可以存储不同类型的对象,列表和元组有几处重要区别.列表元素用([])包括 ...

  7. 我的Python成长之路---第二天---Python基础(7)---2016年1月9日(晴)

    再说字符串 一.字符串的编码 字符串的编码是个很令人头疼的问题,由于计算机是美国人发明的,他们很理所当然的认为计算机只要能处理127个字母和一些符号就够用了,所以规定了一个字符占用8个比特(bit)也 ...

  8. Python成长之路第一篇(2)__初识列表和元组

    可以将列表和元组当成普通的“数组”,他能保存任意数量任意类型的Python对象,和数组一样都是通过数字0索引访问元素,列表和元组可以存储不同类型的对象,列表和元组有几处重要区别.列表元素用([])包括 ...

  9. python成长之路第一篇(5)文件的基本操作

    一.三元运算 我们在上章学习的if,,else,,有一种简便的方法 他的表达式是这样的:变量 = 值1 if 条件 else 值2 解释过来就是如果aaa等于sss则输出值1否则输出值2 二.类的概念 ...

随机推荐

  1. setInterval()-----------js 函数总结

    setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式. setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭.由 s ...

  2. [原]C语言实现的快速排序,采用分治策略,递归实现

    #include<stdio.h> #define LEN 8 int a[LEN] = { 5, 2, 4, 7, 1, 3, 2, 6 }; int Partition(int a[] ...

  3. 分析java 嵌套类与内部类

    一.什么是嵌套类及内部类?     可以在一个类的内部定义另一个类,这种类称为嵌套类(nested classes),它有两种类型:静态嵌套类和非静态嵌套类.静态嵌套类使用很少,最重要的是非静态嵌套类 ...

  4. unzip解压中文文件名乱码

    由于中文的Windows使用的是GBK编码,而Linux默认使用UTF-8编码的,如果在Windows打包带中文文件的zip包,则这个zip包在Linux下面使用默认的归档管理器打开这个zip包的时候 ...

  5. Path Sum 解答

    Question Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that addi ...

  6. 无序线性搜索(Unordered Linear Search)

    假定有一个元素顺序情况不明的数组.这种情况如果我们要搜索一个元素就要遍历整个数组,才能知道这个元素是否在数组中. 这种方法要检查整个数组,核对每个元素.下面是算法实现: #include<std ...

  7. Bring Your Charts to Life with HTML5 Canvas and JavaScript

    Bring Your Charts to Life with HTML5 Canvas and JavaScript Bring Your Charts to Life with HTML5 Canv ...

  8. error LNK2019

    error LNK2019: 无法解析的外部符号 "public: virtual __thiscall Fruit::~Fruit(void)" (??1Fruit@@UAE@X ...

  9. Tomcat可以在eclipse里启动,可是不能訪问首页的问题

    今天在使用eclipse的时候发现一个问题.就是我在eclipse里面已经启动了tomcat.部署上去的项目也能够启动,可是就是没法訪问tomcat的首页.port等等都没有问题. 后来查到解决方式, ...

  10. BCD码、十六进制与十进制互转

    在做嵌入式软件的设计中,常常会遇到十六进制.BCD码与十进制之间的转换,近期做M1卡的应用中,涉及了大量的十六进制.BCD码与十进制之间的转换.通过对BCD码.十六进制 权的理解,轻松的实现了他们之间 ...