元组:不可变序列

元组与列表一样,也是一种序列,唯一不同是元组不能修改。

创建元组很简单:用逗号将一些值分开,就会自动创建元组。创建只有一个值的元组的时候要在该值后面加上一个逗号。

tuple函数

该函数的功能与list函数基本上是一样的:以一个序列作为参数并把它转换为元组。

如果参数就是元组,那么原值返回。元组的分片还是元组。元组的操作只有赋值和访问两种。元组用圆括号括起来。

两种列表不能代替元组的情况:

  • 元组可以在映射(和集合的成员)中当作键使用——而列表则不行。
  • 元组作为很多内建函数和方法的返回值存在,所以经常会对元组进行操作。

一般来说,列表可能更满足对序列的所有需求。

总结

  • 序列。序列是一种数据结构,它包含的元素都进行了编号(从0开始)。典型的序列包括列表、字符串、元组(另外还有Unicode字符串、buffer对象、xrange对象。)其中,列表是可变的(可以进行修改),而元组和字符串是不可变的(不可修改,一旦创建了就是固定的)。通过分片操作可以访问序列的一部分,其中分片需要两个索引号来指明分片的起始和终止,(其中起始索引号在分片范围内,而终止索引号不在分片范围之内。)要想改变列表,则要对相应的位置赋值或利用赋值语句重新书写整个分片。
  • 成员资格。in操作可以判断一个元素是否属于该序列,也可以用来判断一个字符串是否是一个字符串的子序列。
  • 方法。一些内建类型(比如列表和字符串,元组不在其中)具有很多有用的方法。这些方法类似于函数,不过他们与特定值联系密切。方法是面向对象编程中的一个重要的概念。

字符串

字符串是序列的一种,可以利用序列的索引和分片来对字符串访问和赋值。但是字符串是不可改变的。

基本字符串的操作

所有标准的序列操作都可以适用于字符串,比如索引、分片、乘法、加法、判断成员资格、求序列长度、找序列最大最小值等。但是要记住字符串不可修改。

字符串格式化

字符串格式化利用字符串格式化操作符%来完成。

字符串方法

find

find方法可以在一个较长的字符串中查找子字符串,它返回子串最左端所在位置的索引值,如果没有找到就返回-1.

>>> title='monty is a beatiful girl!'
>>> title.fin('girl')
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    title.fin('girl')
AttributeError: 'str' object has no attribute 'fin'
>>> title.find('girl')
20

注意,find返回的并不是布尔值,如果返回了0,则表示在索引值为0出找到了子序列。并且find还可以提供可选择的搜索范围(起点和终点值)。注意有起点和终点指定范围包含起点不包含终点,这是Python的惯例。

join

join是split方法的逆方法。用来连接序列中的元素。

>>> dirs='','user','access','ssuccess'
>>> '/'.join(dirs)
'/user/access/ssuccess'
lower

返回字符串的小写字母版。

>>> name='Gumby'
>>> names=['gunby','smith']
>>> if name.lower()in names:print('Found it')
replace

replace返回某字符串的所有匹配项均被替代之后的字符串。

>>> names='you are so clever'
>>> names.replace('so','very')
'you are very clever'
split

是join的逆方法,用来将字符串分割成序列。

>>> '1+2+3+4+5+6'.split('+')
['1', '2', '3', '4', '5', '6']
>>> '1 2 3 4 5 6 7 8 9 '.split()
['1', '2', '3', '4', '5', '6', '7', '8', '9']

如果不提供任何分隔符,程序会把所有空格作为分隔符(空格、制表符、换行等)

strip

strip返回去除两侧空格(不包括内部)的字符串。也可以指定需要去除的字符,将他们类为参数来去除。

>>> '****name*is****lalalal******!!!!!!'.strip("*!")
'name*is****lalalal'

只能去除两侧的字符。

translate

translate和replace方法一样,可以替代字符串中的某些部分,但是和前者不同的是,translate只处理单个字符。它的优势在于同时可以处理多个替代。在使用translate之前,需要制作一张转换表。转换表中是以某字符替代某字符的对应关系。因为这个表多大256项,因此最好使用string模块中的maketrans函数。maketrans接受两个参数,其实是两个等长的字符串,两个字符串中对应字符互相替换。

小结

字符串方法很多,有的较常使用,有些是用的很少。

Python学习笔记2(序列)的更多相关文章

  1. python学习笔记九——序列

    4.4 序列 序列是具有索引和切片能力的集合.元组.列表和字符串具有通过索引访问某个具体的值,或通过切片返回一段切片的能力,因此元组.列表和字符串都属于序列.序列索引功能演示: tuple=(&quo ...

  2. Python学习笔记:序列构成的数组

    列表推导是一种构建列表(list)的快捷方式 #列表推导 symbols = '!@#$%' codes = [ord(symbol) for symbol in symbols] #ord()Pyt ...

  3. Python学习笔记015——序列(字节数组 bytearray)

    1 序列 常见的序列有:list   tuple  str  bytes(字节串)  bytearray 2 字节数组bytearray 可变的字节序列,相当于bytes的可变版本. 3 创建函数by ...

  4. python学习笔记(一)元组,序列,字典

    python学习笔记(一)元组,序列,字典

  5. Python学习笔记(十四)

    Python学习笔记(十四): Json and Pickle模块 shelve模块 1. Json and Pickle模块 之前我们学习过用eval内置方法可以将一个字符串转成python对象,不 ...

  6. 【python学习笔记】9.魔法方法、属性和迭代器

    [python学习笔记]9.魔法方法.属性和迭代器 魔法方法:xx, 收尾各有两个下划线的方法 __init__(self): 构造方法,创建对象时候自动执行,可以为其增加参数, 父类构造方法不会被自 ...

  7. 【python学习笔记】6.抽象

    [python学习笔记]6.抽象 创建函数: 使用def语句定义函数,不用声明参数类型,和返回值类型 def function_name(param1, param2): 'this is docum ...

  8. 【python学习笔记】5.条件、循环和其他语句

    [python学习笔记]5.条件.循环和其他语句 print: 用来打印表达式,不管是字符串还是其他类型,都输出以字符串输出:可以通过逗号分隔输出多个表达式 import: 导入模块     impo ...

  9. 【python学习笔记】3.字符串使用

    [python学习笔记]3.字符串使用 字符串是一种序列,素有标准的序列操作对字符串用样适用,字符串是不可以改变 格式化操作符,%,左侧是格式化字符串,右侧是被格式的值,可以是一个值.元组.字典 数值 ...

随机推荐

  1. Codevs 3112 二叉树计数

    3112 二叉树计数 题目描述 Description 一个有n个结点的二叉树总共有多少种形态 输入描述 Input Description 读入一个正整数n 输出描述 Output Descript ...

  2. Android近场通信---NFC基础(三)(转)

    转自 http://blog.csdn.net/think_soft/article/details/8180203 过滤NFC的Intent 要在你想要处理被扫描到的NFC标签时启动你的应用程序,可 ...

  3. 黑马tomcat学习day01 tomcat项目部署方式 1.webapps方式 2.Context元素方式

  4. D. Pair Of Lines( Educational Codeforces Round 41 (Rated for Div. 2))

    #include <vector> #include <iostream> #include <algorithm> using namespace std; ty ...

  5. Sublime text3 插件ColorPicker(调色板)不能使用快捷键

    我的原因是: convertToUTF8 和 ColorPicker 快捷键冲突,convertoUTF8的默认转换GBK的快捷键 和 ColorPicker打开调色板的快捷键都是ctrl+shift ...

  6. java的无序机制

    简单说一下上面提到的无序写,这是jvm的特性,比如声明两个变量,String a; String b; jvm可能先加载a也可能先加载b.同理,instance = new Singleton();可 ...

  7. [Python]IndentationError: unindent does not match any outer indentation level

    这个是缩进没对齐 可能是混用了tab与空格,到这里显示空白就可以看出来.

  8. PlSqlDev中执行INSERT SQL语句包含&符号导致数据异常

    在PLSQL Developer中执行Insert语句时提示如下信息: 当时未注意,直接点击OK按钮继续. 导入数据后查看发现部分数据中的参数丢失了一部分,呈以下规律: . 而正常应为: . 经询问大 ...

  9. python+selenium+requests爬取qq空间相册时遇到的问题及解决思路

    最近研究了下用python爬取qq空间相册的问题,遇到的问题及解决思路如下: 1.qq空间相册的访问需要qq登录并且需是好友,requests模块模拟qq登录略显麻烦,所以采用selenium的dri ...

  10. POJ - 3020  Antenna Placement 二分图最大匹配

    http://poj.org/problem?id=3020 首先注意到,答案的最大值是'*'的个数,也就是相当于我每用一次那个技能,我只套一个'*',是等价的. 所以,每结合一对**,则可以减少一次 ...