1.map函数

  map函数用于将指定的数据成员都使用指定函数进行处理。
  比如:

 map(float, arr)
map(square, arr)

  这两个函数分别将arr中成员转换为float类型,以及对于arr中成员求平方。
  还可以通过lamba函数来进行指定匿名函数:

 map(lambda x: x ** 2, [1, 2, 3, 4, 5])
map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])

  但是注意map函数在python2中返回的是List(原生数组),但是在python3中返回的则是一个迭代器。对于迭代器只能使用for语句进行迭代获取:

1 arr = [1,2,3,4,5]
2 arr = map(square, arr)
3 print(arr)
4 for item in arr:
5 print(item)
>><map object at 0x000000000A396278>
>>1 4 9 16 25

 2 frozenset的强大

  frozenset修饰过的list奖会不会被修改,同时会给你排序,还会把重复的元素给删掉;当然set处理过的list也是会把数据删掉,并且会排序
3. python默认返回值是None
  之前调用tree的一个方法disp()总是返回none,我是百思不得其解
 class treeNode:
def __init__(self, nameValue, numOccur, parentNode):
self.name = nameValue
self.count = numOccur
self.parent = parentNode # 上级树信息
self.children = {} # 下级(树枝)树信息
self.nodeLink = None
def inc(self, numOccur):
self.count += numOccur def disp(self, ind=1):
print (' '*ind, "name: %s, count: %d" %(self.name, self.count))
for child in self.children.values():
child.disp(ind + 1)
  调用:
 print(" 元素:%s没有在树中...为树创建子节点: %s" % (items[0], newTreeNode.disp())) 
  这个print总是会输出:
元素:z没有在树中...为树创建子节点: None
  None从哪里来的?
想了好久,才想明白,disp这个函数本身是没有返回值的,然而在print中调用改函数本意希望返回一个打印的字符串;但是disp其实是在函数体内部完成了打印,但是并没与把打印内容输出出来。
而python默认的返回值是None;所以你强取返回值获取的就是None;

  可以这么讲:disp正确的用法不是在print里面,而是应该单独使用。

4.Python中数组双冒号
Python中数组多冒号(:)的问题:[start:end:step],step代表的是步长,很多时候省略start,默认从0开始,省略step默认是1.例如:
 arr=[0,1,2,3,4,5,6,7,8,9] arr[0:10:2] 
输出为:

[0, 2, 4, 6, 8]

如果步长为负值,则代表要根据当前顺序做逆序排列。然后再取值,例如:
 arr=[0,1,2,3,4,5,6,7,8,9] arr[:5:-1] 
  输出为:

[9, 8, 7, 6]

 5. juypter的“未连接至服务”
jupyter notebook可以正常进入到网页,但是发现连不上python3的服务,提示为“未连接至服务”;后来网调发现时因为Juypter里面有个组件tornado版本问题,需要降到5.1.1(之前是6.x),之后juypter可以正常使用。
6. 自定义类和包
  自定义的包下面需要有__init__.py的文件(为空无所谓)
  在引用的文件中要添加该包的引用路径(包文件所在的父文件夹),例如根目录下创建了一个包,那么需要:
 import os, sys
sys.path.append(os.path.abspath("."))

  这里又要给概念,就是包(文件夹),模块(py文件),类(py文件中当以的代码段,通过class关键声明包裹)三者关系。

  这里有一个概念要澄清一下,模块其实就相当于Java里面的全局static类,如果里面有变量的话是共享的;如果你需要具有一定的封装性,希望调用方有自己的处理单元,需要定义一个类,因为是通过new获取的处理单元,所以不会有数据共享的问题。

 7. 关于from和import
  这个需要持续关注,先说一点测试通过的内容
  from A import B和 import A.B的差别在于:前者可以直接使用B,而后者必须要全路径引用;
  另外,import后面跟的至少是要模块,如果是包名称(对应__init__.py文件),在代码中引用将会导致问题。比如:
 import sklearn
a=sklearn.datasets.load_digits()

  将会报错:AttributeError: module 'sklearn' has no attribute 'datasets'

  这个是因为如果跟代码跟进sklearn,起始对应的是sklearn包下面的__init__.py文件,这个import是不允许的。

  但是在单步执行的情况下,只有一个地方曾经执行过"import sklearn.datasets",那么这个地方就不会报错;因为在IPython机制下,代码是整个执行过程共享的;需要通过“ctrl+Z”退出当前环境,从新敲“python”进入到IPython的环境,再来执行才会继续报错。

Python手记(二)的更多相关文章

  1. Python 基础 二

    Python 基础 二 今天对昨天学习的Python基础知识进行总结,学而不思则惘,思而不学则殆! 一.先对昨天学习的三大循环的使用情况进行总结: 1.while循环的本质就是让计算机在满足某一条件的 ...

  2. 初学Python(二)——数组

    初学Python(二)——数组 初学Python,主要整理一些学习到的知识点,这次是数组. # -*- coding:utf-8 -*- list = [2.0,3.0,4.0] #计算list长度 ...

  3. Python学习二:词典基础详解

    作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...

  4. 有关python下二维码识别用法及识别率对比分析

    最近项目中用到二维码图片识别,在python下二维码识别,目前主要有三个模块:zbar .zbarlight.zxing. 1.三个模块的用法: #-*-coding=utf-8-*- import ...

  5. PYTHON练习题 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数。

    Python 练习 标签: Python Python练习题 Python知识点 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数,如果大于预设的 ...

  6. 从Scratch到Python——Python生成二维码

    # Python利用pyqrcode模块生成二维码 import pyqrcode import sys number = pyqrcode.create('从Scratch到Python--Pyth ...

  7. 用python生成二维码

    Python生成二维码,可以使用qrcode模块, github地址 我是搬运工 首先安装, 因为打算生成好再展示出来,所以用到Pillow模块 pip install qrcode pip inst ...

  8. Python 实现二维码生成和识别

    今天突然想给自己自己做个头像,然后还是二维码的形式,这样只要扫一扫就可以访问我的主页.然后就开始自己的苦逼之路... 其实实现二维码java,c#,C++等都可以实现:由于自己正在学python,所以 ...

  9. Python - 模块(二)

    目录 Python - 模块(二) re re下面的方法 logging os Python - 模块(二) re re模块提供了正则表达式的相关操作 主要字符介绍: . 通配符,除了换行符之外的任意 ...

  10. 使用 Python 生成二维码

    在“一带一路”国际合作高峰论坛举行期间, 20 国青年投票选出中国的“新四大发明”:高铁.扫码支付.共享单车和网购.其中扫码支付指手机通过扫描二维码跳转到支付页面,再进行付款.这种新的支付方式,造就二 ...

随机推荐

  1. Web开发中button与submit区别

    submit是button的一个特例,也是button的一种,它把提交这个动作自动集成了. 如果表单在点击提交按钮后需要用JS进行处理(包括输入验证)后再提交的话,通常都必须把submit改成butt ...

  2. Android24以上拍照代码

    public void takePic(){ //创建File对象,用于存储拍照后的照片 File outputImage = new File(getExternalCacheDir()," ...

  3. 广工十四届校赛 count 矩阵快速幂

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6470 题意:求,直接矩阵快速幂得f(n)即可 构造矩阵如下: n^3是肯定得变换的,用二项式展开来一点 ...

  4. 【sparkSQL】SparkSession的认识

    https://www.cnblogs.com/zzhangyuhang/p/9039695.html https://www.jianshu.com/p/dea6a78b9dff 在Spark1.6 ...

  5. ie 下date对象

    var t = '2014-02-26T21:18:02.497' var a = t.replace(/(\d{4})-(\d{2})-(\d{2})T(.*)?\.(.*)/, "$1/ ...

  6. Win10系列:C#应用控件进阶3

    椭圆 若要绘制椭圆需要用到Ellipse元素,通过指定Ellipse元素的Width和Height属性值来确定椭圆的大小,其中Width指椭圆在X轴的宽度,Height指椭圆在Y轴的高度,若X轴和Y轴 ...

  7. Java中的值传递与引用传递

    1.基本类型和引用类型在内存中的保存 Java中数据类型分为两大类,基本类型和对象类型.相应的,变量也有两种类型:基本类型和引用类型. 基本类型的变量保存原始值,即它代表的值就是数值本身: 而引用类型 ...

  8. springboot+thymeleaf+springbootJPA实现一个简单的增删改查

    1.springboot是什么,给我们带来了什么方便? 通过阅读springboot的书籍发现springboot最便利的是为我们自动配置了很多的东西,几乎可以实现无xml,甚至简单的无sql,为我们 ...

  9. 用matlab生成mif文件

    在FPGA中,rom模块的初始化文件分为两种,一种是hex文件,另外一种是mif文件,这两种文件都可以通过Quartus进行手工创建,进行手工输入数据,也可以借助于专用的文件编辑器完成编辑. 在此介绍 ...

  10. Caffe中Interp层的使用

    最近实验当中借鉴了FPN网络,由于FPN网络对图片shape有要求,采用了两种方式,其一是在data_layer.cpp中,对原图进行padding操作:其二是需要对特征图进行类似crop操作,使得两 ...