好了,我们接着上一节的内容,继续学习机器学习中的Python语法部分。这一节算是Python语法的最后一节了。也就是说若是真的看懂了这两节的内容,理论上说就机器学习的领域或者方向,语言已经不是问题了。同时也意味着立刻真正的进入机器学习的核心部分了。好了,那我们接下来正式开始我们的学习啦。数据结构
Tuples是Python中的一种新的形式的数据collection(至少相对于C++, objective-C,Java是新的。其余的我就不敢确定了,省得被打脸,哈哈)。其实她和List几乎是同样的,除了2个方面的不一样。她和list的区别主要是下面2个方面的不一样:1)Tuples 的建立的展示是讲元素element用括号包起来,而List是用的中括号。2)Tuples一旦建立 元素是不可改变的,即它是immutable的,而List的元素是能够改变的,即Mutable的。好了,下面看一下tuples的建立代码展现一下,不然光说不练假把式。哈哈哈机器学习
t = (1,2,3)
上面的代码就是建立了一个tuple,他的元素有三个,分别是1,2,3. 那么既然有了list为何还要Tuples呢? 这主要是由于Tuple的应用场景主要是用于那些有多个返回值的函数中,想象一下,若是一个函数有多个返回值,你要怎么弄呢?对了,你确定想到了List对吧?但是List里面的数据可能由于多人协同开发的时候被其余同事修改了,是会有必定Risk的。那么天然而然咱们就想到了要用Tuples这个数据结构,由于他是Immutable的,若是有人试图修改她的值,他会报错的。总结起来就是List是可读可写的,而Tuples是只读的。看看下面这个返回多个值的例子吧。函数
a = 0.125.as_integer_ratio()
上面的函数返回了2个值,分别是分子和分母,都是整型数据。返回的数据是(1,8)。oop
关于Tuples还有一个点是Individual assignments(翻译过来应该是叫单独赋值,不知道翻译的对不对,容我装个B,哈哈哈),这里的意思是讲Tuple中的值能够分别赋值给不一样的变量,以下所示:学习
numerator,demonstrater = a
上面代码的运行结果就是:numerator = 1, demonstrater = 8.spa
好了,如今接受最后一种形式的collection,就是字典。这和其余语言都很像,就是key-value键值对。好了,下面先来瞧一瞧我们dictionary的建立翻译
numbers = {"one":1,"two":2,"three":3}
这和其余不少种的语言的都同样,再来看看如何经过Key值来retrieve value。code
numbers["one"]
下面介绍一下dictionary中的比较高级可是在实际中会常常用到的的功能,这些语法特性看起来挺牛逼,其实都是纸老虎,哈哈,心态上咱们要藐视他妈,操做上要重视他们哈。orm
1) in operator对象
in的关键字是Python中最多见的一个关键字,没有之一!!!!在list中用,在dictionary中用,在条件判断时会用,在循环中仍是会用的。既然这一节讲的是dictionary,咱们就看看她在dictionary中的应用吧。
#create a dictionary planets = ['Mercury', 'Venus', 'Earth', 'Mars', 'Jupiter', 'Saturn', 'Uranus', 'Neptune'] plants_to_initial = {planet:planet[0] for planet in planets} "Mercury" in plants_to_initial # the in operator will tell us whether something is a key in the dictionary
上面的建立字典代码如今看不懂不要紧,她就是建立了一个字典,这个字典的key值是这些星星的名字,value值就是这些星星的首字母。这里重要的是最后一行代码,判断“Mercury”这个字符串是否是这个字典的key值。若是是key,返回True, 不然返回False。
2)遍历key值
#the for loop will loop over its keys for key in plants_to_initial: print(key,end = " ")
如上代码所示,直接对dictionary遍历,返回的是每个key-value键值对的key值。上面代码就是打印这个字典的全部的key值。
3) 同事遍历key-value 键值对
在字典中,若是想要同时遍历键值对,咱们必须经过dictionary的一个method,叫作:items(). 这个方法返回一个list,里面的元素是tuples,这些tuples里面的元素就是key,values. 话很少说,直接上代码看
for planet, initial in plants_to_initial.items():#items()will return its key-value pairs print(planet,initial)
好了,终于进入到最最经常使用的一种基本数据类型了-string。几乎在所用的应用中,产生和消费的数据,几乎字符串占了绝大部分。固然啦,在机器学习中最经常使用到的数据类型是int和float,可是string类型的也是常常会出现的。其实String能够将它当作一串字符,这一串字符就比如一个list。用英文来讲就是 A string is a sequences of characters. (是否是瞬间高大上了,从大蒜变成了咖啡。哈哈哈哈)。 因此在Python中,几乎你在list中看到的方法,都一样适用于String.
1) String 的建立和index
planet = "Pluto" planet[0]#return P planet[-3:]#return uto len(planet)#return 5
2)经常使用的String方法
#string methods planet.upper()#return PLUTO planet.lower()#return pluto planet.index("uto")#return 2 planet.startswith("Plu")#return True planet.endswith("asds")#return False
3) List 和 String之间的相互转换
#going between strings and lists #string -> list split method planets = "Pluto is a planet" list_planets = planets.split()#return a list of ["Pluto","is","a","planet"] dates = '2019-10-08' list_dates = dates.split('-')#returns ["2019","10","08"], the element are also all string types #list->string join method year,month,day = list_dates #individual assignment '/'.join([year,month,day]) #returns "2019/10/08"
注意不管是String->List仍是List->String, 他们的基本元素都是String,而不会是Int或者Float或者其余什么稀奇古怪的数据类型。也就是说,不管是Split仍是Join, 他们操做的对象都是String。例如:'/'.join([1,2,3]),这句代码就会报错,由于1,2,3都是整型数据而不是string。这里比较抽象哈,本身慢慢体会。
4)formatting a string
String是一个很是灵活的数据类型,例如int也能够转换成string,等等。所以咱们经常须要将不一样数据类型的数据拼接在一块儿,而后转换成一个string。这种状况下,咱们常常须要用到format方法,固然也存在其余方法能够完成这个任务,可是format的牛逼之处不只仅在于这,她还能够格式化数据的表现格式,例如保留几位小数点,大数字的表现形式等等,具体的能够参考下面的代码。
position = 9 "{}, you will be the {}th planet to me".format(planet,position) #returns 'Pluto, you will be the 9th planet to me' "{:.2}".format(0.123345) #returns "0.12", the result is converted to string type "{:,}".format(1234578) #returns '1,234,578' the result is also converted to string type "{0},{1},{1},{0},{0}".format(12,55)#indexing of format the result is '12,55,55,12,12', the result is also string type
Loop comprehension 是Python中很是受欢迎的一个特性,她可以快速建立List和dictionary,而且使用起来很是灵活,在未来机器学习的实践中大家会发现很是好用。说了这么多,那么接下来咱们来看看到底什么是Loop Comprehension.
1) 利用Loop Comprehension 来快速建立dictionary。
其实这已经在前面的代码中有所体现了,以下面的代码所示,快速建立字典。
plants_to_initial = {planet:planet[0] for planet in planets}
其实就是用for in 的循环,而后经过key:value的形式,批量的产生键值对,最后生成一个字典。
2)利用Loop Comprehension 来建立List
List的建立也是很灵活的,也能够操做循环的元素,来达到一些个性化或者特殊需求的一些目的。甚至她还能够经过组合条件判断的语句达到更加精细化的控制,建立List的一些经常使用方式以下所示
numbers = [1,2,3,4] squares = [n**2 for n in numbers] #returns [1,4,9,16] print(squares) short_squares = [n for n in squares if n<9] #returns [1,4] count_number_of_squares = len([n for n in squares if n < 100]) #returns 4
总结: 前面一节内容还有这一节内容大致上已经介绍了经常使用Python的绝大部分特性,若是已经掌握,我以为仅仅对于机器学习这个领域的学习的话,已经够用了。这两节的内容是给已经有其余语言经验的人准备的(若是一点计算机语言经验都没有,我建议仍是从Hello World开始)