联系客服
客服二维码

联系客服获取更多资料

微信号:LingLab1

客服电话:010-82185409

意见反馈
关注我们
关注公众号

关注公众号

linglab语言实验室

回到顶部
Python | 数据类型

274 阅读 2020-07-25 09:51:02 上传

以下文章来源于 奈提柯斯先生

Python

让Python成为语言研究的利器


Xu & Yang


PhoneticSan



学习参考

Python for Linguists

Natural Language Processing with Python

Introducing Python

Learning Python

Python教程(廖雪峰)

··· ···


Recap


  1. Python同样可以调用多种多样的包进行使用。

  2. Python在Windows中需要手动安装,Mac系统下自带Python 2.7版本,如需Python 3可以通过终端使用Homebrew进行安装。

  3. 运行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 * 10958.72 * 108是一样的。


数字型


第二,布尔型(Boolean)。布尔型是一种逻辑数据类型,只包括TrueFalse两类。在此基础上,还可以对布尔型使用逻辑运算,比如并(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



            点赞
            收藏
            表情
            图片
            附件