zoukankan      html  css  js  c++  java
  • python基础知识点(一)

    自己开始学python时的一些笔记,当时写了word文档,现在在博客里整理一下,有点乱,也有点长,希望能帮助大家,也方便自己查询(ps:只适合初学者,大佬直接跳过就OK了)。

    1.Python中的列表,非常适合实现栈的入栈和出栈操作:

    列表的append()方法对应入栈操作,列表的pop()方法对应出栈操作

    s=[]

    s.append(1)#在列表的末尾填上元素1

    s.append(2)

    print(s)#结果为[1,2]

    s.pop() #返回列表最后一个元素并删除

     

    2.队列核心操作:尾部添加,首部删除

     

    3.如果一个树的每个节点,都至多有两个子节点,则成为二叉树。

    如何使用嵌套列表实现二叉树:以根节点,左子树,右子树为顺序,依次写出。

    4.字典类型{}操作函数和方法

     

     

    5.python第三方库,jieba,中文分词,其中最重要的函数就是jieba.lcut()可以以列表形式将一句话返回具体的分词结果。

    6.文本词频统计

    # 此程序用来统计英文著作中出现的最多的单词前几名及对应的次数

    >>> dic={'apple':1,'book':2,'money':10}

    >>> dic.items()

    dict_items([('apple', 1), ('book', 2), ('money', 10)])

    >>> items=list(dic.items())

    >>> items

    [('apple', 1), ('book', 2), ('money', 10)]

    >>> items.sort(key=lambda x:x[1],reverse=True)

    >>> items=list(dic.items()) #counts是一个字典,items将字典以列表形式返回,items就是一个列表

    >>> items.sort(key=lambda x:x[1],reverse=True)

    >>> items

    [('money', 10), ('book', 2), ('apple', 1)]

    >>> items[0]

    ('money', 10)

    >>>

    1)lambda功能:创建匿名函数(lambda只是一个表达式,而def则是一个语句)

    这里,lambda匿名函数和matlab中的匿名函数@一样,fun=@(x,y) x+y

    2) items函数,将一个字典以列表的形式返回,因字典是无序的返回的列表也是无序的

    >>> dic={'apple':1,'book':2,'money':10}

    >>> dic.items()

    dict_items([('apple', 1), ('book', 2), ('money', 10)])

    >>> 

    7.文件的打开和关闭

    文件打开<变量名>=open(<文件名>,<打开模式>)

     

    文件关闭

    <变量名>.close() #这里变量名是文件句柄

      

     

    文件句柄.read(2) #一次读入文件的前两个字节,只要读入的不为空就继续读入,属于分批处理。

    上图为分行读入,逐行处理

     

     8.二维数据的遍历:二维数据中每一个元素也是列表类型

     9.词云

    (1)先引入词云库,wordcloud

    (2)wordcloud.WordCloud()生成一个词云对象赋给变量c

    (3)使用c.generate()将一段文本加载到词云中

    (4)c.to_file是输出词云文件

    w设置了宽度为1000,高度为700,字体为微软雅黑;

    中文文本需要自己分词,这里使用第三方库jieba,jieba.lcut()得到的是一列表,用.join()方法将列表以空格划分赋给generate,再输出词云文件,下图是效果

    10.k-近邻算法(kNN)

    工作原理:存在一个训练样本集,样本集中每个数据都存在标签。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,算法提取样本集中特征最相似数据的分类标签,一般只选择数据集中前k个最相似的数据。

    一个简单程序如下

     

     

    定义一个空字典,取k为3,首先,k=0,sortedDistIndicies[0]=2,然后labels[2]=B,

     

     11.分类器的错误率:分类器给出错误结果的次数除以测试执行的总次数。

    12.  1)strip()函数默认删除首尾所有空字符 ‘ 空格‘

    >>>s=' 0000this is string example0000wow!!!0000 '

    >>> s.strip()

     '0000this is string example0000wow!!!0000'

         2)#首尾端'0'被删除,中间不动

     >>> t='0000this is string example0000wow!!!0000'

    >>> t.strip('0')

    'this is string example0000wow!!!'

    split():拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list)

    13.readline()方法用于从文件读取整行,包括换行字符 。若指定了一个非负的参数,则返回指定大小的字节数,包括 字符。

    文件test.txt的内容为:

    1:xinyingyuexinguowan

    2:xinyingyuexinguowan

    3:xinyingyuexinguowan

    for i in range(5):

        print(i,end=’,’)

    结果:0,1,2,3,4,

    14.from os import listdir

    原型为os.listdir(path)# listdir()函数用来获取指定目录的内容。Eg:trainingFileList=listdir('D:/python/trainingDigits')

    15.如下

     

    myDat是个列表,要求列表中的每个元素也是列表,且长度相同。[example[0] for example in myDat]是将myDat中每一个列表的第一个元素提取出来。

     16.列表中[:0]是将列表置成空列表,列表名[:1]是将列表的第一个元素赋给列表。列表名[:n]是将列表中的前n个元素取出。列表名[n:]是将索引n及n以后的元素都取出。

     

     17.count()是列表中的元素次数统计函数。

     18. a|b  #a,b是两个集合,a|b是两个集合的并集;list(a)是将一个集合变成一个列表。

     

     

    列表名.index(列表中的元素)#返回列表中的元素所在的索引值

    19.对于一个文本字符串,python的string.split()方法可以按空格将其拆分,缺点是包含了标点。

    20. random.uniform(x,y)#方法将随机生成一个实数,它在[x,y)之间,x是随机数的最小值,包含该值,y是随机数的最大值,不包含该值。

      

    上图随机生成的3*3数组和mat(数组)后虽然显示的东西一样,但类型不一样,用mat函数转换为矩阵之后才可以进行一些线性代数的操作。

    21. m,n=shape(A)#得到矩阵A的大小,即行数与列数

    ones((3,1))得到的是3行1列的全1数组,shape(shuzu)[0]得到的是数组的行数。

    ones(5) 结果: array([ 1.,  1.,  1.,  1.,  1.]) #生成全为1 的行向量数组

     22.下图是实现的logistics回归问题,要注意:坐标x,y的对应维度要相等,x=np.arange(-3.0,3.0,0.1) shape(x)的结果是(60,),数组行向量y要将其转置为列向量,y=np.array(y).transpose()

     23.Python 中定义私有变量只需要在变量名或函数名前加上“_ _”两个下划线。在外部,使用  _类名_ _变量名即可访问双下横线开头的私有变量了。

     24.A是一个矩阵,100行3列,则A[0]即为矩阵的第一行,A[3]即为矩阵的第4行数值。矩阵的第100行和一个数组相乘,结果为对应元素分别相乘

     

    25.sigmoid函数导函数的取值范围是多少,首先g(z)=1/(1+exp(-z)),其导数是g’(z)=exp(-z)/(1+exp(-z))**2,取值范围就是(0,1/4]

     

     26.一个数乘个列表list,是把列表重复这么多次,一个数乘个数组array,才能把每个元素都乘对应的数。

     27.支持向量机的优缺点:

     28.如下图,定义函数即使是pass,没有return,函数依旧会返回一个None对象。类型为noneType,但type(f)就是一个函数类型。

    29.python的getattr,hasattr,和setattr()方法详解

    博客:https://www.cnblogs.com/cenyu/p/5713686.html

     

     30.字典添加元素

     

    31.isinstance(object, classinfo)

    如果参数object是classinfo的实例,或者object是classinfo类的子类的一个实例, 返回True。如果object不是一个给定类型的的对象, 则返回结果总是False。

     32. param1参数在本例中对应的传入参数apples,而后边的'bananas', 'cherry', 'kiwi'均被打包进param2中,因为在函数定义时param2的前边有*号表示这是一个不定长定位参数,会将后边的不定长个定位参数打包为一个tuple。因为B选项正确。

    33.join函数:连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串。

    #对序列进行操作(分别使用' '':'作为分隔符)

    >>> seq1 = ['hello','good','boy','doiido']

    >>> print ' '.join(seq1)

    hello good boy doiido

    >>> print ':'.join(seq1)

    hello:good:boy:doiido

    #对字符串进行操作

    >>> seq2 = "hello good boy doiido"

    >>> print ':'.join(seq2)

    h:e:l:l:o: :g:o:o:d: :b:o:y: :d:o:i:i:d:o

    #对元组进行操作

    >>> seq3 = ('hello','good','boy','doiido')

    >>> print ':'.join(seq3)

    hello:good:boy:doiido

    #对字典进行操作

    >>> seq4 = {'hello':1,'good':2,'boy':3,'doiido':4}

    >>> print ':'.join(seq4)

    boy:good:doiido:hello

    #合并目录

    >>> import os

    >>> os.path.join('/hello/','good/boy/','doiido')

    '/hello/good/boy/doiido'

     34.字典中的key值不能为字典。字典中key,可以是字符串,数字等不可变类型,它们都是hashable的。而字典,列表等可变类型是不能够作为key值的。因此最后一句crates[boxes] 中的boxes类型为dict,会直接报错。

     

     

     35.字典中confusion[1]confusion[1.0]是一样的,会重新赋值。

     36.    数据保存和加载。

     

    37.定义在类中的方法之外的变量是(类变量)。Python类中,公有/私有变量是通过_ _进行区别,而在方法之外的变量均为类变量,实例变量均在方法中进行定义且以self.开始。

    38.list对象仅能与list对象进行相加。与其它类型对象相加均会报出如unsupported operand type(s) for +: 'int' and 'list'的错误。列表l1=[1,2,3],则表达式1+l1结果异常。

    39.  fromkeys是字典对象提供的方法,用于创建一个新字典,以第一个参数中的元素做字典的键,第二个参数为字典所有键对应的初始值。

    {}. formkeys((1,2),3)返回{1:32:3}

    40.  python中的子类调用父类的方法,需要使用函数super。在类的继承中,如果重定义某个方法,该方法会覆盖父类的同名方法,但有时我们又希望能同时实现父类的功能,我们就需要调用父类的方法了,可通过使用 super 来实现。

    41. Python中,关键字__ __可以定义一条异常,引发异常(raise)。python会自动引发异常,也可以通过raise显式地引发异常。一旦执行了raise语句,raise后面的语句将不能执行。

    42.   python3中每一个字符的长度都被计算为1(包括标点)。字符串"人生苦短,我用Python"的长度是多少?答案是13

    43.   chr()函数用一个范围在range256)内的(就是0255)整数作参数,返回一个对应的字符。unichr()跟它一样,只不过返回的是Unicode字符。ord()函数是chr()函数(对于8位的ASCII字符串)或unichr()函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的ASCII数值,或者Unicode数值,如果所给的Unicode字符超出了你的Python定义范围,则会引发一个TypeError的异常。

     44.关于raw_input()sys.stdin.readline()的区别:

    https://www.cnblogs.com/dolphin0520/archive/2013/03/27/2985492.html     

    sys.stdin.readline( )会将标准输入全部获取,包括末尾的' ',因此用len计算长度时是把换行符' '算进去了的,但是raw_input( )获取输入时返回的结果是不包含末尾的换行符' '的。

     

     45.字符串逆序方法:

    https://blog.csdn.net/seetheworld518/article/details/46756639

     46.  input().split(‘ ’)将输入的字符串按空格分割成了列表。列表也可以使用[::-1]实现逆序输出。

     47.python3里面,map()的返回值已经不再是list,而是iterators, 所以想要使用,只用将iterator 转换成list 即可,比如 list(map())

     48. mat可以将数组转化为列表类型,相当于矩阵。

     49. 列表不能dataMat[ : ,0]这样用,先将其转换为矩阵才能这样用,得到矩阵的第一列。min得到第一列中最小的值。

    50.   rand()生成01内的随机数

     51.  数组过滤

    52.矩阵名.A将一个矩阵转换为array数组。

     53. nonzeros(a)返回数组a中值不为零的元素的下标。

     

     二维数组的话,即b2[0,0],b2[0,2],b2[1,0]的元素不为0

    具体实现

     

     54.  列表可以转化为数组和矩阵,tolist()实现功能将数组、矩阵转换为列表。对于一维矩阵,tolist()[0]才能转化为列表。

     55.global能将函数内的局部变量变成全局变量。

    56.  for i in (1,2,3): 此时,i取值1,2,3.

     

     57.  python中字符串前面加一个r代表原始字符串标识符=属于引用,foo变的话,foo1也变,foo1foo也变;元组属于不可变类型。

        

     

    58.  a.count(b)用来统计在字符串a中字符b出现的次数。

     

    59. bin(N)将十进制转换为二进制,oct(N)把十进制转换为八进制,hex(N)是把十进制转换成16进制。

    60.  对于二维列表,len(列表名)得到列表的行数,len(列表名[0])得到列表的列数。

     61.  替换字符串中的某个字符,用replace,str=”xxy”,str.replace(“x”,”z”)  returns zzy

     62.代码中判断变量是否为空None,有以下三种写法:

    (1)if x is None:

    (2)if not x:   # 如果x False,not xTrue,则执行if语句

    (3)if not x is None:

    63.    index用于返回列表中值对应的索引。

    64.  _ _init_ _()方法称为构造方法,功能是只要实例化一个对象,这个方法就会在对象被创建时自动调用。

    65.  列表的pop()方法用于删除列表的元素,并返回该元素,不指定索引默认删除最后一个元素。

     

     66. issubset用于判断一些集合元素是否在指定集合中,是则返回True,否则返回False.

    67.   列表可以指定位置利用insert插入元素,例如z.insert(2,78)则将78插入到索引为2的位置。

    68.列表可以指定得到前n个元素,具体如下图,z=[列表元素][:2]表示取列表的前两个元素,前零个元素为空。

     

     69. dict.update(dict2)即将字典dict2添加到字典dict中。若添加的字典中的键在原字典中已存在,则改变其键值。

     70.语句H1 = [frozenset([item*2]) for item in freqSet]freqSet先取集合{2,3}for item in freqSet 取值为2,3将其处理成不可变的单个集合元素。

     71. 集合可以进行相减操作。

    许多事都不是因为喜欢才做,而是因为责任。--------2019.2.23

    72. 字典中,字典名[]即得到键对应的值。当键为datatarget时都是字符串型,要加双引号,即键必须是不可变类型。

     73.  函数原型,vstack(tup),参数tup 可以是元组,列表或者numpy数组。

     74.  python位操作符左移和右移运算

    左移<<:写成二进制后向左移动对应的位数,高位移出舍弃,低位的空位补零。

    eg3<<23左移2位。3的二进制为00000011 向左移动两位,变成

                                      00001100,十进制为12

    数学意义:没有溢出的前提下,对于正数和负数,左移n位就相当于乘以2n次方。

     

    右移>>:按二进制形式把所有的数字向右移动对应的位数,低位移出舍弃,高位的空位正数补0,负数补1

    eg.11>>2:11的二进制为00001011,将其向右移动两位,低位移出舍弃,高位因为11是正数,补0,即         00000010   ,换成二进制是2。即右移一位相当于除以2,右移n位相当于除以2n次方。这里,结果取的是商,而不是余数。

    75.   tile将对应的点复制对应的次数,并返回数组array类型。

    76. 75按位异或,7的二进制为00000111,   5的二进制为00000101,异或操作规则,

    0^0=0,   0^1=1,   1^0=1   1^1=0 ; 0xFFFFFFFF16进制中边界数,其值转换为十进制是4294967294,正数和它做与操作,结果还是这个正数,负数和它做与操作,结果就是0xFFFFFFFF本身。

     77.  64行是按照字典键对应的值进行从大到小的排序。

    78.对字典取列表,得到以字典的键为元素的列表;对字典的items()取列表,形式如下。

     79.  log()不能直接使用,需要导入math模块,底数可以设置,默认为e.例如以2为底,8的对数。

      列表尾部添加元素。

     80.下面119行语句可以得到信息增益最大的特征,比较的每一对数值的第二个元素。如果简单的取max,将得到第一个数最大的。

     81. python中的.loc.iloc的区别。loc:通过行标签索引数据,例如,df.loc[1]表示索引出第一行的数据。df.loc[‘ a’]是按标签索引,而iloc只能通过行号索引,df.iloc[0]是对的,而df.iloc[‘a’]是错误的。详细见如下博客。

    https://www.cnblogs.com/ghllfl/p/8481576.html   

    82.  value_counts()是查看表格中某列有多少个不同值的方法,并返回对应的个数。.sort_values(ascending=False)是将数据从大到小排列。

     

     附:1.简历模板网址:https://www.zhihu.com/question/49065128

        数据分析软件SPSS链接:https://pan.baidu.com/s/1pfGuDzfpLSubQwPCPQbHmA   密码:0d4k

    1MXNet:基于神经网络的深度学习的计算框架,python的第三方库

     

     2Panda3D

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    前路漫长
    OEL6 /boot分区删除恢复
    区块链:剖析工作量证明
    【转】区块链:Schnoor签名究竟是什么
    使用 Hyperledger Fabric 开展私密交易
    Sovrin:技术落地可期,但推广难度较高
    白硕:区块链技术与数据隐私(附视频)
    从入门到精通零知识证明与zkSNARK
    区块链安全:匿名性以及隐私性
    朋友去面试Python工程师,又带回来几道基础题,Python面试题No10
  • 原文地址:https://www.cnblogs.com/xyzluck/p/12167802.html
Copyright © 2011-2022 走看看