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. 基于Bootsrap的BeyondAdmin前端模板 --分享

    1.PC端 2.移动端 3.下载 最新:http://www.yidt.cn/ 链接:https://pan.baidu.com/s/1Tx6EVmGFnVV7H7h3SFwldA 提取码:0btw

  2. vscode之快速生成vue模板

    文件-首选项-用户代码片段-搜索“vue”点击进入vue.json 复制这个片段 { "Vue component": { "prefix": "vu ...

  3. get UI URL

    DATA:LV_APPL_MODEL TYPE REF TO IF_BSP_WD_APPL_MODEL.    DATA:RV_URL TYPE STRING.     cl_bsp_wd_appl_ ...

  4. wrk 使用记录及踩过的坑

    wrk是什么?https://github.com/wg/wrk wrk 是一个非常小巧高效的开源性能测试工具,支持lua脚本来创建复杂的测试场景.wrk 的一个很好的特性就是能用很少的线程压出很大的 ...

  5. CDI

    CDI,JAVA用语 Java EE CDI 主要使用@Inject注解来实现依赖注入,把受管理的bean注入到由容器管理的其它资源中去.在本教程中,我们将会介绍在CDI环境下几种不同的可选策略来实现 ...

  6. sql 同一个字段在查询结果中出现两次

    SELECT GET .daytime,    GET.data AS GET,    xh.data AS xh FROM    ( SELECT daytime, SUM ( get_sum ) ...

  7. redis特性,使用场景

    redis特性: 1.redis保存在内存中,读写速度快. 2.redis--持久化(断电数据不丢失:对数据的更新将异步保存到磁盘上). 3.redis数据结构丰富 4.redis功能丰富 5.简单( ...

  8. oracle 链接

    <properties> <!--配置Hibernate方言 --> <property name="hibernate.dialect" value ...

  9. 计时 timeit

    python中的计时器:timeit timeit 通常在一段程序的前后都用上time.time(),然后进行相减就可以得到一段程序的运行时间,不过python提供了更强大的计时库:timeit #导 ...

  10. HTML5:链接与路径

    链接与路径 一.路径 绝对路径——指包含服务器协议的完全路径 相对路径——指被链接文档相对于当前文档的路径. 二.超链接<a> 1.语法: <a href=“目标”>链接文本& ...