Python与机器学习前言——Python常用语法

为什么要学Python呢,为了打好机器学习这场仗,需要有件趁手的兵器~这就是Python。
作为可执行的伪代码,实现起来的便利性就不多说了,关键是它的开源代码多、环境好、有机器学习的库:scikit-learn,当然,还有强大的字符串处理功能。
从《利用Python进行数据分析》附录开始(基础语法)从与常用的语言的区别开始谈起。本文注重Python常用并与C语言有区别的语法。
1.

a = [1,2,3]
b = a
a.append(4)

此时a与b都等于[1,2.3,4]。即“=”表示a和b都指向同一个对象:[1,2,3]
2.
函数可对其参数进行改变操作。
C中函数调用的时候只是对形参的值进行复制使用,而Python的函数是纯粹把形参拿过来了

def append_element(some_list,element)
    some_list.append(element)
    data = [1,2,3]
    append_element(data,4)

此时data就确确实实等于[1,2,3,4]了。
3.
isinstance:了解对象的类型

isinstance(5,int) #ture
isinstance(4.5,(int,float)) #true
isinstance(4.5,int) #flase

4.
isiterable:判断某对象是否可迭代

isiterable([1,2,3]) #true
isiterable(5) #flase

5.
import
这个东西可将其他.py文件中的函数和定义好的变量引用在当前.py中,用这个就可以把各种库引入进来了
from numpy import* # 把numpy库中所有东西都引用过来
6.
is:用于判断两个引用是否指向同一个对象

a = [1,2,3]
b = a
c = list(a) #list可新建列表
a is b #true
a is not c #flase
a == c #true

7.
虚数虚部用 j 表示
cval = 1+2j
8.
字符串表示方法:

a = 'meachine learning'
b = 'big data'
c = """i love
meachine learning #用于带换行
"""

Python字符串是不可以改变的,想修改字符串只能新建。
9.
字符串转换与处理
许多Python对象都可以通过str函数转换为字符串:

a = 5.6
s = str(a) #s = '5.6'

字符串可以被当做某种序列类型(如列表、元组)来处理:

list(s) #['5' , '.' , '6']
s[:2] #'5.'

10.
pass
什么都不执行,在开发新程序中用来占位以保证程序完整性。
11.
三元表达式

value = true-expr if condition else false-expr

它和下面这种格式效果一致:

if condition
value = true-expr
else:
value = false-expr

12.
元组构成的元组:

nested_tup = (4,5,6),(1,2) #nested_tup : ((4,5,6),(1,2))

tuple可将任何序列或迭代器转换为元组

tuple([4,2,0]) #(4,2,0)
tup = tuple('string') #tup : ('s','t','r','i','n','g')
tup[0] # 's'

元组元素不可修改,但可以添加:

tup = tuple(['foo',[1,2],True])
tup[2] = False #TypeError
tup[1].append(3) #tup : ('foo',[1,2,3],True)

元组拆包:

tup = 4,5,(6,7)
a,b,(c,d) = tup # d : 7

元组方法:count

a = (1,2,3,2)
a.count(2) # 2

13.
列表
可通过方括号[]或者list函数定义:

a_list = [2,3,7,None]
tup = ('1','2','3')
b_list = list(tup) # b_list : ['1','2','3']
b_list[1] = '4' #b_list : ['1','4','3']

14.

b_list.append('dearf')   # b_list : ['1','4','3','dearf']
b_list.insert(1,'dearf') # b_list : ['1','dearf','4','3','dearf']
b_list.remove('dearf')   # b_list : ['1','4','3','dearf']
'3' in b_list        # True
b_list.extend(7,8,(2,3)) # b_liist : ['1','4','3','dearf',7,8,(2,3)]

在相同效果下extend比“+”的操作要快得多
15.
sort

a = [7,2,1,4]
a.sort() # a : [1,2,4,7]
b = a.sorted() # b : [1,2,4,7] a不变
sorted('hourse race') #[' ','a','c','e','h','o','r','r','s']
c = ['mmm','m','mm']
c.sort(key = len) # c : ['m','mm','mmm']
a.sort(reverse = True) # a : [7,4,2,1]

16.
dict
在机器学习这种需要处理文本的情况下,字典的重要性相当大。字典本质上是一个二元元组集。

empty_dict = {}
dict = {'a':'some value' , 'b':[1,2,3,4]}
dict[7] = 'an integer' #dict : {7:'an integer' , 'a':'some value' , 'b':[1,2,3,4]}
'b' in dict #True
del dict[7] #删除dict中7:'an integer'
ret = dict.pop('a') #删除dict中'a':'some value'并将此值赋给ret

17.
列表推导式
相当简洁的过滤一个列表(字典、集合)

strings = ['a','as','bat','car','dove']
[x.upper() for x in strings if len(x)>2] #['BAT','CAR','DOVE']

18.
函数
和C不同,Python的函数可以返回多个值甚至字典:

def f():
    a=5
    b=6
    return{'a':a ,'b':b}

函数亦为对象
对一个字符串进行数据清洗:
states=[’ Alabama ‘,’Geogria!’,’ Geor’,’south car##’,’West s?’]
方法1:

import re
def clean_strings(strings):
    result = []
    for value in strings:
        value = value.strip()
        value = value.sub('[!#?]',' ',value)#移除标点符号
        value = value.title()
        result.append(value)
    return result

方法2:将作用在字符串上的一系列操作做成列表

def remove_punctution(value)
    return re.sub('[!#?]',' ',value)
clean_ops = [str.strip ,remvoe_punctution , str,title]
def clean_strings(strings ,ops):
    result = []
    for value in strings:
        for function in ops:
            value = function(value)
            result.append(value)
    return result

19.
lambda(匿名)函数

def apply_to_list(some_list ,f)
    return [f(x) for x in some_list]
ints = [4,0,5,6]
apply_to_list(ints ,lambda x:x*2)

20.
生成器
直到迭代完成后再一起输出每一次迭代的值,xrange生成的就是一个生成器(range生成的是一个列表对象)

gen = (x ** 2 for x in xrange(100)) #这是一种生成器表达方式

功能和下面这个冗长的生成器等价:

def _make_gen()
    for x in xrange(100):
        yield x**2
        gen = _make_gen()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值