Python让Python成为语言研究的利器Xu & YangPhoneticSan学习参考
Python for Linguists
Natural Language Processing with Python
Introducing Python
Learning Python
Python教程(廖雪峰)
··· ···RecapPython同样可以调用多种多样的包进行使用。
Python在Windows中需要手动安装,Mac系统下自带Python 2.7版本,如需Python 3可以通过终端使用Homebrew进行安装。
运行Python的环境有很多,可以使用PyCharm等IDE,也可以使用Sublime等文本编辑器。Python:
https://www.python.org/
IDE: Pycharm、VSCode、Anaconda
https://www.jetbrains.com/pycharm/
https://code.visualstudio.com/
https://www.anaconda.com/
文本编辑器:Sublime、Atom
https://www.sublimetext.com /
https://atom.io/在面对程序语言时,不可避免的一个内容就是数据类型,程序语言的大部分数据类型是相似的。在Python中,主要有以下几种数据类型。Python数据类型第一,数字型(numbers)。毋庸置疑,在任何程序语言中都会处理各种数字。在Python中可以处理的三种基本数字型有:整数型(integer)、浮点型(float)、复数型(complex)。第一个和第三个类型顾名思义,就是我们数学上所讲的整数和复数。整数型包括正负两类,复数型所使用的字母是j(如3+5j)。浮点型也就是小数,因为在科学记数法表达小数时,小数点的位置是游移不定的,比如5.872 * 109和58.72 * 108是一样的。
数字型第二,布尔型(Boolean)。布尔型是一种逻辑数据类型,只包括True和False两类。在此基础上,还可以对布尔型使用逻辑运算,比如并(and)、或(or)、非(not)。这与逻辑学课程中所学到的内容,是一致的。除此之外,涉及比较的语句,或者判明变量类型的内容,也可以输出布尔值。
布尔型第三,字符型(string),即所有的文字、语句等等,也可以把其他类型的数据转换为字符型。对于语言学研究者来说,这可能是接触到最多的数据类型。字符型数据使用一对单引号'text'或一对双引号"text",当使用三对单引号或双引号时,Python允许你换行输入。当然,你也可以使用单引号并在里面设置换行符\n实现分行。除了换行,还有\t用来表示缩进,也就是键盘上的tab键(一般是四个空格),实现的是表达一个制表符。
字符型这时候有人会问,如果我真的想在转义字符\后写t或n且不表达换行或tab功能呢?很简单,只需要输入两个反斜杠即可,这个反斜杠被称作转义字符,通俗地讲,它可以把Python中带有特殊功能的符号转换为普通的字符。比如,我使用两个转义字符,那么就是告诉电脑,我后面的那个转义字符就是普通的反斜杠。
再比如,我想输出What's your preference?这一句,根据字符串要求,我需要放在引号中。但是计算机语言它是一个“线性读取”,在读到's的时候,会识别这里已经有单引号了,因此它会认为到这里是字符串的末尾。结果读到最后又出来一个单引号,并且没有与之配对的,因此会报错。这时候我们在单引号前输入转义字符,就是告诉程序,这个不是你所知道的那个单引号功能。当然,这种情况下你也可以使用双引号来实现字符输出。转义字符的使用字符型数据还可以使用较为复杂的运算。除了普通的加减乘除,我们还可以计算它的长度,变换大小写,或者对语句空白进行填充等等。我们着重讲最后一个功能,它涉及到的函数是format( )函数。比如,我计划给主语Mike提供配对的问候语,我不用每次都要打一遍Mike,我可以如下实现:x = '{} Mike'y = x.format('Hello')z = x.format('Goodbye')print('y: ' + y)print('z: ' + z)
可以看到,当我们输出的时候,y和z就填补了x变量中的空缺之处。借助于此,我们一个语句的空缺可以有很多,随便你按顺序进行填写。如果你不想按照顺序,你也可以自己命名空缺的名称,比如:a = 'one = {uno}; two = {dos}'b = a.format(dos='PH', uno='AB')print('b: ' + b)format函数使用format( )函数时还可以让字符实现左对齐、右对齐、居中对齐的效果,对应的符号依次是、^三类。为了让左右对齐看得比较明显,我们给字符左右两端加上符号。具体实现方式为(数字表示整体长度):x = '|{:<10}|'y = '|{:>10}|'z = '|{:^10}|'a = x.format('hat')b = y.format('hat')c = z.format('hat')print('a:' + a)print('b:' + b)print('c:' + c)
不同的对齐结果此外,字符型数据还可以“摘取”。比如我们存储了一个字符型数据到变量x,那么它就会把这个字符从第一个开始进行编号。需要注意的是,Python的编号从0开始,因此第一个字母是0,第二个是1,第三个是2,以此类推。与R一样,使用中括号即可实现摘取。
提取字符型数据中的内容第四,列表(list)。列表是一个有序的单一结构,里面可以输入任意不同类型或相同类型的数据。对于列表,主要有三个操作需要学习:添加元素append( )函数,插入元素insert( )函数,删除元素pop( )函数。第一个是直接在列表末尾加入相应的元素,第二个是可以选择位置插入,第三个则是可以选择任意位置元素进行删除,具体实现方式如下,你可以试着操作一番。需要时刻注意的是,位置是从0开始计算的。x = ['plosive', 'affricate', 'paper']x.append('nasal')print(x)x.insert(1,'fricatives')print(x)x.pop(3)print(x)
列表的元素相关操作除了上面的增删元素,我们还可以对列表的元素进行整理,使用sort( )函数可以按照大小或字母排序整理列表元素,使用reverse( )函数可以把列表当前顺序“反转”。最后,我们还可以使用in来检测列表中是否包含某元素。这些就是列表的基本操作了。
列表元素的排序与检测第五,元组(tuple)。元组与列表相类似,唯一的不同在于它是不可更改的,也就是说,一旦定义完毕就不能增删元素,但是依旧可以检测其中是否包含某元素,因此在安全性上就大大提升。元组使用小括号来定义,我们可以把一个列表转换为元组。
list与tuple最后一个基本数据类型是字典(dictionary),也是我们用得最多的数据类型。字典是一种可变容器,可以存储任意变量。字典的基本构成是{key:value},即每一个索引(key)都对应一个值(value),不同的配对之间使用逗号间隔开,使用索引我们就可以直接获得与之配对的值。与列表类似,我们可以增删其中的元素。如我们建立如下字典:x = {'cat':7, 'chair':'hat', 'table':6.3}#索引对应数值x['cat']#增加一个新的组配x['paper'] = 9#更新组配的值x['cat'] = x['cat'] + 3#列出所有的索引、数值、元素list(x.keys())list(x.values())list(x.items())
字典相关操作本期我们主要介绍了数据类型,这也是每一个程序语言所必须要了解的内容,为我们之后的代码编写提供了基础。下一期我们将介绍Python for Linguists的第三章内容。如果您对第二章的练习题有所疑问,欢迎留言,我们会尽力解答。—END—
排版:Xu & Yang