Python基础——核心数据类型_序列_字符串

来源:互联网 发布:苹果在线软件安卓版 编辑:程序博客网 时间:2024/05/17 08:40

      • 序列
        • 索引取值
        • 分片
        • 加法
        • 乘法
        • 成员
        • 内建函数
      • 字符串
        • 方法
        • dir and help
        • 模式匹配
        • 写字符串的其他方法

序列

容器是包含其他对象的任意对象,序列及映射(字典)是常见的容器,序列中的每个元素都对应一个位置,而映射中的元素都对应一个键。集合(set)也是容器的一种。

序列是python中的最基本的数据结构。序列中的每个元素被分配一个序号,或者称为索引,和c语言中的数组一样,下标从0开始。python包含6种内建的序列:列表、元组、字符串、Unicode字符串、xrange对象、buffer对象。最常用的是列表和元组。列表和元组的主要区别在于列表可以被修改,但是元组不行。绝大多数情况下都可以用列表替代元组,唯一的例外是在元组用作字典的键的情况下。

通用操作

索引取值

s[0]
[i],所有的序列都可以通过索引来取指定位置上的值,如序列字面量,返回值为序列的函数等。python语言特有的是索引可以为负数,表示从最后一个位置开始数起,-1代表最后一个元素,-2代表倒数第二个元素,以此类推。

分片

s[1:-1]
[i,j],索引是用来取序列中的一个元素,而分片是用来取序列中的一定范围内的元素,取得的子序列包含第一个边界索引对应位置上的元素,但是不包含第二个边界索引对应位置的元素,只取到它前面那个元素。需要注意的是,如果左边索引对应元素晚于右边索引对应元素出现,那么得到的是一个空序列,如[3, 1], 或[-3, 0]。这样的话,需要思考怎么得到最后一个位置上的元素呢?有两种方法,一个是右索引是最后一个元素下一个位置对应的索引;或者以缺省的方式 [3:]。
分片除了需要指定的开始点和结束点,还有一个参数:步长。如果不显示指定步长,默认步长为1,以步长1遍历起始点和结束点之间的元素。[0:10 : 2],最后一个参数就是指定的步长。这里需要注意的是,步长不可以为0,但是可以为负数,表示逆向遍历。这时左索引应该是大于右索引的。左索引仍是起始位置,所得的分片仍包含左索引对应的元素,不同之处就在于逆向遍历。

加法

s1 + s2

>>>x = "hello, ">>>y = "world!">>>x + y'hello, world!'

乘法

s * 3
序列可以乘上一个整数,得到一个新序列,是原有序列重复整数值次的结果。如果想初始化一个长度为10 的空表,可以通过[None] * 10来实现,None是python的内建值,表示什么都没有

成员

in
检查一个值是否在序列中,可以用in运算符(bool运算符)。如 ‘we’ in ‘weight’ 就会返回True值。

内建函数

len()max()min()

字符串

python中的字符串具有不可变性,也就是说没有任何操作可以对字符串对象本身进行修改,修改操作返回的都是新的对象。

方法

str.find(str1):查找字符串str中是否有子串str1,如果有返回str1的首字母位置;否则返回-1。注意,这个和成员资格in语句的不同之处在于in语句得到bool值,而find方法返回的是位置。

str.replace**(sre1, str2)**:搜索并用str2替换字符串中的str1

str.split**(char)**:join方法的逆方法,把字符串按分割符char分割成列表,默认char是空格(包括空格,制表符,换行符)。

str.upper():返回str的大写形式

str.isalpha():测试字符串中的内容是否为字母

str.isdigit():测试字符串的内容是否为数字

str.strip():去除字符串str两端的字符,默认是空格,也可以指定。注意,如果指定的是 ‘*!’ 表示两端所有的 ‘*’ 和 ‘!’,而不是 ‘*!’ 这个字符串。

str.rstrip():去掉字符串右边的空白字符

str.join(seq_of_string):将元素为字符串的序列用str连接成一个长字符串。

格式化:高级替代操作

  • %
        左侧是格式化字符串,右侧是希望填入格式化字符串的值,可以是数字,也可以是字符串。如果需要填入多个值,那么需要用到元组或字典(只能用这两个)。
        格式化字符串的%s部分称作转换说明符,标记了需要插入的转换值的位置, s为转换类型,表示值会被格式化成字符串。如果需要格式化浮点数,那么使用f表示类型,可以指定精度,%+10.3f,点号后面的3表示保留小数点后三位。小数点前面是字段宽,不够的话左边补上空格。字段宽前面的是转换标志,可以是0,+,-和空格。0表示在转换值位数不够是左边补上0,+表示正负符号要加上,-表示左对齐,空格表示在整数前补上一个空格,用于正负数的对齐。
>>>'%S, eggs, %s' % ('spam', 'SPAM')'spam, eggs, SPAM'
  • .format()
>>>'{}, eggs, {}'.format('spam', 'SPAM')'spam, eggs, SPAM'

特殊拼接
字符串除了加法的拼接方式,还可以通过让两个字符串紧邻,由python实现拼接:

>>>"hell, " "world""hello, world"

dir and help

如果想要查看对象的所有属性(方法也是属性),可以使用内置函数dir()

>>>dir(S)

如果要查询方法的详细情况可以使用help函数:

>>>help(S.replace)

模式匹配

为了在python中进行模式匹配,需要导入re模块。

>>>import re>>>match = re.match('Hello[ \t](.*)world', 'Hello Python world')#与()中匹配的部分保存为组>>>match.group(1)'Python'

写字符串的其他方法

转义字符
\
\’
\n
\t

长字符串
在需要书写长达多行的字符串时,可以使用三个引号替代普通引号,这样在每行的末尾会增加一个换行符:

'''string aaabaaaaaaaaaabbbbbbbbbbbbbccccccccccc'''

也可以通过在一行的最后加上转义字符\,这样也可以实现长字符串或语句的书写。

原始字符串
在普通的字符串中的\一般代表着转义字符,如果就是希望得到本来的形式,如\n,那么需要对\转义,\n,但是这样书写并不美观,可以用原始字符串达到这一目的。原始字符串的格式是在普通字符串前面加上r:r'string',需要注意的是原始字符串的结尾不能是\,如r'string\',因为如果最后一个字符是\,python就不知道是否应该结束该字符串。
那如果非得在字符串的最后加上\,怎么办呢?这用到了字符串的第二种拼接方式,可以将\这部分分离出来,r'string' '\\'

Unicode字符串
python中普通的字符串以8位ASCII码进行存储,二Unicode字符串以16位Unicode字符存储,显然能表示的字符增加了。Unicode字符串在前面加上u,如u‘string’。

其他

字符串的打印
注意,python在打印字符串的时候会保留引号,这是因为python打印值的时候会保持该值在python代码中的状态,而如果用print语句就不一样了,是没有引号的。

值被转换成字符串的两种机制:
str():类型转换
repr():同str()一样将一个对象转换成字符串形式,创建字符串,以合法的python表达式表示值,repr的功能也可以用x(反引号)来替代。
默认的交互模式回显和print的区别类似于repr和str函数的区别:前者产生的结果看起来像是代码,而后者通常对用户更加友好

>>>num = 1.0 / 3>>>repr(num)'0.3333333333333333'>>>str(num)'0.333333333333'

用户输入
input():参数作为提示内容打印到窗口,返回的是用户输入的内容,
raw_input():这个函数也是为了和用户进行交互的,但是为什么有了input()还要这个函数呢?因为input假设用户的输入都是合法的python表达式,也就是说如果是字符串,应该是”string”的形式,这对用户来说很不方便,这时就要用到raw_input了,它把用户的输入当做原始数据,然后放入字符串中。
除非一定要用input函数,否则尽可能的使用raw_input()。

>>>x = input('please enter:')please enter:4>>>type(x)int>>>x = raw_input('please enter:')please enter:4>>>type(x)str
0 0
原创粉丝点击