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. spring/java ---->记录和整理用过的注解以及spring装配bean方式

    spring注解 @Scope:该注解全限定名称是:org.springframework.context.annotation.Scope.@Scope指定Spring容器如何创建Bean的实例,S ...

  2. Yet Another Maxflow Problem CodeForces - 903G (最小割,线段树)

    大意: 两个n元素集合$A$, $B$, $A_i$与$A_{i+1}$连一条有向边, $B_i$与$B_{i+1}$连一条有向边, 给定$m$条从$A_i$连向$B_j$的有向边, 每次询问修改$A ...

  3. 『TensorFlow』读书笔记_简单卷积神经网络

    如果你可视化CNN的各层级结构,你会发现里面的每一层神经元的激活态都对应了一种特定的信息,越是底层的,就越接近画面的纹理信息,如同物品的材质. 越是上层的,就越接近实际内容(能说出来是个什么东西的那些 ...

  4. Django框架简介-开头

    一.MVC框架和MTV框架(了解即可) MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制 ...

  5. Matlab:五点差分方法求解椭圆方程非导数边值问题

    差分格式脚本文件: tic; clear clc M=32;%x的步数 N=16;%y的步数 h1=1/M;%x的步长 h2=1/N;%y的步长 x=0:h1:1; y=0:h2:1; u=zeros ...

  6. 索引(B-树)

    前言 本文是在讲述什么样的数据结构适合作为索引,以及其适合作为索引的原因.而阅读本文需要对B树和B+树结构有稍微的理解.以及需要对磁盘操作知识有稍微的了解.对于磁盘操作的相关知识,在文章尾部的链接文章 ...

  7. 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(二)(代码篇)

    这篇是上一篇的延续: 用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一) 源代码在github上可以下载,地址:https://github.com/guoxia ...

  8. unity中 UGUI的按下、拖动接口事件的实现

    using UnityEngine; using System.Collections.Generic; using DG.Tweening; using UnityEngine.EventSyste ...

  9. 为什么企业需要IT资产管理

    为什么企业需要IT资产管理 为什么企业需要IT资产管理?其实这个问题,如同企业为什么要管理一样重要. 企业需要管理.因为有了管理,人.物可尽其用,在不同的位置.角色上发挥作用,然后按照一定的运维规则, ...

  10. day_7

    r 读w 写a 追加写 f = open('s.txt',mode='r',encoding='utf-8') ff = f.readline() #读取时一行一行的时候末尾会跟着\nprint(ff ...