一、分别取出大于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. canvas总结:元素大小与绘图表面大小

    前言 我们使用canvas的时候一般在canvas元素中直接设置它的width和height: <canvas id="myCanvas" width="300&q ...

  2. HIBERNATE - 符合Java习惯的关系数据库持久化(精华篇)

    HIBERNATE - 符合Java习惯的关系数据库持久化      下一页 HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.0.4   目录 前言 1. ...

  3. 解决mac ssh连linux中文乱码的问题[转]

    将Mac下/etc/ssh_config中的SendEnv LANG LC_*这一行用#号注释掉 reference: http://www.zhihu.com/question/20117388

  4. [C++程序设计]内置函数

    注意: 可以在声明函数和定义函数时同时写 inline,也可以只在其中一处声明inline,效果相同,都能按内置函数处理. 使用内置函数可以节省运行时间,但却增加了目标 程序的长度.因此一般只将规模很 ...

  5. nginx和apache的优缺点比较

    简单的说apache httpd和nginx都是web服务器,但两者适应的场景不同,也就是两者专注于解决不同的问题.apache httpd:稳定.对动态请求处理强,但同时高并发时性能较弱,耗费资源多 ...

  6. Find them, Catch them(POJ 1703 关系并查集)

    Find them, Catch them Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 38668   Accepted: ...

  7. 典型的DIV CSS三行二列居中高度自适应布局

    如何使整个页面内容居中,如何使高度适应内容自动伸缩.这是学习CSS布局最常见的问题.下面就给出一个实际的例子,并详细解释.(本文的经验和是蓝色理想论坛xpoint.guoshuang共同讨论得出的.) ...

  8. C# Struct结构体

    C#中结构类型和类类型在语法上非常相似,他们都是一种数据结构,都可以包括数据成员和方法成员. 结构和类的区别: 1.结构是值类型,它在栈中分配空间:而类是引用类型,它在堆中分配空间,栈中保存的只是引用 ...

  9. C# 反射_基础

    反射用于在程序运行过程中,获取类里面的信息或发现程序集并运行的一个过程.通过反射可以获得.dll和.exe后缀的程序集里面的信息.使用反射可以看到一个程序集内部的类,接口,字段,属性,方法,特性等信息 ...

  10. SQL Server 2008空间数据应用系列十二:Bing Maps中呈现GeoRSS订阅的空间数据

    原文:SQL Server 2008空间数据应用系列十二:Bing Maps中呈现GeoRSS订阅的空间数据 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Se ...