Python最基本的数据结构是序列(sequence),序列中的每个元素被分以以0开头的唯一的一个id号。

Python中有6种内建的序列:列表,元组,字符串,Unicode字符串,buffer对象和xrange对象。

下面是一个使用列表的例子:

>>> edward = ['Edward Gumby',42]
     >>> john = ['John Smith',50]
     >>> director = [edward,john]
     >>> director
     [['Edward Gumby', 42], ['John Smith', 50]]

列表中的元素是可以变化的,例如可以在director中新添加一个对象。元组中的元素是不能变化的,当内部的元素不能被修改时,应该考虑使用元组。

所有的序列类型都有以下的公共的操作:索引,分片,加,乘,检查是否存在某个元素,计算长度,找出最大最小元素,迭代。

索引

>>> greetings = "greetings"
    >>> greetings[-1]
    's'
    >>> greetings[0]
    'g'

从左边开始使用索引是由0开始,从右边开始使用索引是由-1开始.

分片

>>> numbers =[1,2,3,4,5,6,7,8,9]
    >>> numbers[3:6]
    [4, 5, 6]
    和Java的subString一样,第一个数字(3)是包含在内的,第二个数字(6)是不包含的。

分片范围的第一个参数和第二个参数都是可以省略的,省略就表示开始或者结尾。

>>> numbers[-3:]
    [7, 8, 9]
    >>> numbers[:3]
    [1, 2, 3]

实际上第一个参数和第二个参数都是可以省略的,如下:

>>> numbers[:]

[1, 2, 3, 4, 5, 6, 7, 8, 9]

也可以加上第三个参数,表示步长,隔几个数字生效。

>>> numbers[3:10:2]
    [4, 6, 8]

步长也可以是负数,这时分片的方向是向前的。

>>> numbers[8:3:-1]
    [9, 8, 7, 6, 5]

    

>>> [1,2,3]+[7,8,9]
    [1, 2, 3, 7, 8, 9]

不同的类型是不能相加的,否则会出错:

>>> [1,2,3] +"hello"
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    TypeError: can only concatenate list (not "str") to list

    

>>> "python"*5
    'pythonpythonpythonpythonpython'
    >>> [12]*3
    [12, 12, 12]

None表示列表什么都没有,但是却可以起到占位的作用,列表中的元素可以在后来在进行赋值。   

>>> [None]*3
    [None, None, None]

成员资格

    >>> permissions ="rw"
    >>> "r" in permissions
    True

>>> user =['jack','mike','adas']
    >>> 'jack' in user
    True

>>> database =[
    ... ['jack',34],
    ... ['mike',27],
    ... ['adas',30]
    ... ]
    >>> ['mike',27] in database
    True

长度,最大值,最小值

     >>> numbers = [7,9,33]
     >>> len(numbers)
     3
     >>> max(numbers)
     33
     >>> min(4,7,22,3)
     3

不同于元组和字符串,列表中的元素是可变的。使用list函数可将其他序列类型转换为列表。

>>> list("hello")
     ['h', 'e', 'l', 'l', 'o']

列表有一些其他序列类型不一定有的功能,例如:

元素赋值

     >>> x=[1,1,1]
     >>> x[1]=2
     >>> x
     [1, 2, 1]

删除元素

>>> x=[1,2,3]
     >>> del x[2]
     >>> x
     [1, 2]

分片赋值

     >>> name = list("Perl")
     >>> name
     ['P', 'e', 'r', 'l']
     >>> name[2:] = ['a','r']
     >>> name
     ['P', 'e', 'a', 'r']

分片赋值可以在不改变原有元素的情况下插入新的元素:

>>> numbers =[1,5]
     >>> numbers[1:1]=[2,3,4]
     >>> numbers
     [1, 2, 3, 4, 5]

与上面同样的道理,分片赋值也可以进行元素的删除操作:

>>> numbers
     [1, 2, 3, 4, 5]
     >>> numbers[1:4]=[]
     >>> numbers
     [1, 5]

append方法

     append方法用于在列表的末尾增加新的元素,新增加的元素可以是新的类型:

>>> mumbers = ["Jane","Mary","Tina"]
     >>> mumbers.append(1);
     >>> mumbers
     ['Jane', 'Mary', 'Tina', 1]

extend方法

extend方法可以将2个列表合称为1个列表:

>>> a =[1,2,3]
     >>> b=[5,6,7]
     >>> a.extend(b)
     >>> a
     [1, 2, 3, 5, 6, 7]

使用 a = a+b可以达到同样的效果。

count方法

count方法用于统计某个元素在列表中出现的次数:

[1, 2, 3, 5, 6, 7]
     >>> ['to','be','or','not','to','be'].count('to')
     2

index方法

index方法用于找出匹配的元素在列表中的位置:

>>> ['to','be','or','not','to','be'].index("be")
     1
     >>> ['to','be','or','not','to','be'].index("be",2)
     5
     >>> ['to','be','or','not','to','be'].index("be",2,4)
     Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
     ValueError: 'be' is not in list

insert方法

insert方法用于将元素插入在指定的位置,用上述的分片功能也能完成:

>>> numbers =[1,2,3,5,6,7]
     >>> numbers.insert(3,"four")
     >>> numbers
     [1, 2, 3, 'four', 5, 6, 7]

pop方法

pop方法返回列表中的元素并将其删除,默认返回的是最后一位的元素,也可以返回指定位置的元素

>>> numbers = [1,2,3]
     >>> numbers.pop()
     3
     >>> numbers
     [1, 2]
     >>> numbers = [1,2,3]
     >>> numbers.pop(0)
     1
     >>> numbers
     [2, 3]

remove方法

remove方法用于移除列表中的元素,移除的只是第一次出现的元素

>>> numbers = [1,2,3,1]
     >>> numbers.remove(1)
     >>> numbers
     [2, 3, 1]

reverse方法

>>> numbers = [1,2,3,1]
     >>> numbers.reverse()
     >>> numbers
     [1, 3, 2, 1]

sort方法

>>> numbers = [1,2,3,1]
     >>> y = numbers
     >>> y.sort()
     >>> y
     [1, 1, 2, 3]

下面的做法是错误的,因为sort会对序列做排序操作,并返回了一个空值
    >>> numbers = [1,2,3,1]
    >>> y = numbers.sort()
    >>> y

Python基础篇(二)的更多相关文章

  1. Python基础篇(二)_基本数据类型

    Python基础篇——基本数据类型 数字类型:整数类型.浮点数类型.复数类型 整数类型:4种进制表示形式:十进制.二进制.八进制.十六进制,默认采用十进制,其他进制需要增加引导符号 进制种类 引导符号 ...

  2. python基础篇(二)

    PYTHON基础篇(二) if:else,缩进 A:if的基础格式和缩进 B:循环判断 C:range()函数和len()函数 D:break,contiue和pass语句 for,while循环 函 ...

  3. python基础篇-day1

    python基础篇 python是由C语言写的: pass 占位符: del,python中全局的功能,删除内存中的数据: 变量赋值的方法: user,pass = 'freddy','freddy1 ...

  4. python基础篇(六)

    PYTHON基础篇(六) 正则模块re A:正则表达式和re模块案例 B:re模块的内置方法 时间模块time A:时间模块的三种表示方式 B:时间模块的相互转换 随机数模块random A:随机数模 ...

  5. python基础篇(五)

    PYTHON基础篇(五) 算法初识 什么是算法 二分查找算法 ♣一:算法初识 A:什么是算法 根据人们长时间接触以来,发现计算机在计算某些一些简单的数据的时候会表现的比较笨拙,而这些数据的计算会消耗大 ...

  6. python基础篇(一)

    PYTHON基础篇(一) 变量 赋值 输入,输出和导入 A:输入 B:输出 C:导入 运算符 A:算数运算符 B:比较运算符 C:赋值运算符 D:位运算符 E:逻辑运算符 F:成员运算符 G:身份运算 ...

  7. python基础篇(三)

    PYTHON基础篇(三) 装饰器 A:初识装饰器 B:装饰器的原则 C:装饰器语法糖 D:装饰带参数函数的装饰器 E:装饰器的固定模式 装饰器的进阶 A:装饰器的wraps方法 B:带参数的装饰器 C ...

  8. python基础篇(四)

    PYTHON基础篇(四) 内置函数 A:基础数据相关(38) B:作用域相关(2) C:迭代器,生成器相关(3) D:反射相关(4) E:面向对象相关(9) F:其他(12) 匿名函数 A:匿名函数基 ...

  9. python基础篇(文件操作)

    Python基础篇(文件操作) 一.初始文件操作 使用python来读写文件是非常简单的操作. 我们使用open()函数来打开一个文件, 获取到文件句柄. 然后通过文件句柄就可以进行各种各样的操作了. ...

随机推荐

  1. [bzoj1301] [LLH邀请赛]参观路线

    本题同bzoj1098 用个并查集,把连续的被访问过的点并起来..这样就不会尝试已经走过的点了. #include<cstdio> #include<iostream> #in ...

  2. HDU1728-逃离迷宫-BFS

    逃离迷宫 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  3. A + B Problem II(大数加法)

    http://acm.hdu.edu.cn/showproblem.php?pid=1002 A + B Problem II Time Limit: 2000/1000 MS (Java/Other ...

  4. 将电脑文件复制到vm虚拟机中,然后安装步骤

    [root@lixiaohu 桌面]# cp openssl-1.0.1f.tar.gz /usr/src     /usr/src  这是复制到的路径[root@lixiaohu 桌面]# cd / ...

  5. solr服务的搭建(以solr4.1实现)

    1.准备工作:一个干净的Tomcat,solr-4.10.3. 2.新建一个文件夹我这里命名为solr,将Tomcat和solr-4.10.3放进去.新建一个solrhome的文件夹,里面放的是sol ...

  6. js时间戳与时间日期间相互转换

    今天在工作中要将获取到的时间转换为时间戳,一时间竟不知道怎么用,于是不得不去查询资料,这里特地做个笔记. 1.将日期转换为时间戳. 要将日期转换为时间戳,首先得先获取到日期,这里可以直接指定日期,或者 ...

  7. Linq学习(主要参考linq之路)----2LINQ方法语法

    方法语法:Fluent Syntax 方法语法是非常灵活和重要的.我们这里讲描述使用连接查询运算符的方式来创建复杂的子查询,方法语法的本质是通过扩展方法和Lambda表达式来创建查询. eg1: st ...

  8. call 和 ret 指令

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  9. 自己模拟的一个简单的tomcat

    servlet容器的职责 总的来说,一个全功能的servlet容器会为servlet的每个HTTP请求做下面的一些工作: 1,当第一次调用servlet的时候,加载该servlet类并调用servle ...

  10. 定时任务schedule(quartz)

    1, 简介Quartz是一个任务调度框架.核心类:Scheduler  :调度器,所有Job的调度都是由它控制;JobDetail   :生成Job对象的实例,存储Job对象需要的参数;Job     ...