`
linvar
  • 浏览: 259729 次
  • 性别: Icon_minigender_1
  • 来自: 未定
社区版块
存档分类
最新评论

python2.x学习笔记(7)-列表,元组

阅读更多
1. 列表是能保留任意数目的 Python 对象的灵活的容器, 列表不仅可以包含 Python 的标准类型,而且可以用用户定义的对象作为自己的元素.列表可以包含不同类型的对象,而且要比 C 或者 Python 自己的数组类型(包含在 array 扩展包中)都要灵活.因为数组类型所有的元素只能是一种类型

2. 列表才有的构建--列表解析.这种方法是结合了列表的方括弧和 for 循环,在逻辑上描述要创建的列表的内容:
   >>> [ i * 2 for i in [8, -2, 5] ]
   [16, -4, 10]
   >>> [ i for i in range(8) if i % 2 == 0 ]
   [0, 2, 4, 6]

3.列表类型内建函数
List Method            Operation
list.append(obj)          向列表中添加一个对象 obj
list.count(obj)          返回一个对象 obj 在列表中出现的次数
list.extend(seq)          把序列 seq 的内容添加到列表中
list.index(obj, i=0,j=len(list))             
返回 list[k] == obj 的 k 值,并且 k 的范围在 i<=k<j;
否则引发 ValueError 异常.
list.insert(index, obj) 在索引量为 index 的位置插入对象 obj.
list.pop(index=-1)        删除并返回指定位置的对象,默认是最后一个对象
list.remove(obj)         从列表中删除对象 obj
list.reverse()           原地翻转列表
list.sort(func=None,key=None,reverse=False)
以指定的方式排序列表中的成员,如果 func 和 key 参数指定,
则按照指定的方式比较各个元素,如果 reverse 标志被置为True,则列表以反序排列.

4. 在使用可变对象的方法如 sort(),extend()和 reverse()的时候要注意,这些操作会在列表中原地执行操作,也就是说现有的列表内容会被改变,但是没有返回值!是的,与之相反,字符串方法确实有返回值:
   字符串是不可变的 -- 不可变对象的方法是不能改变它们的值的,所以它们必须
返回一个新的对象.如果你确实需要返回一个对象,那么我们建议你看一下 Python2.4 以后加入的 reversed()和 sorted()内建函数.
   它们像列表的方法一样工作,不同的是它们可以用做表达式,因为它们返回一个对象.同时
原来的那个列表还是那个列表,没有改变,而你得到的是一个新的对象.

5. 功能上,元组和列表相比有一个很重要的区别,元组是一种不可变类型.正因为这个原因,元组能做一些列表不能做的事情... 用做一个字典的 key.另外当处理一组对象时,这个组默认是元组类型.

6.只有一个元素的元组需要在元组分割符里面加一个逗号(,)用以防止跟普通的分组操作符混淆.
>>> emptiestPossibleTuple = (None,)

7. 拷贝 Python 对象
浅拷贝和深拷贝
对一个对象进行浅拷贝其实是新创建了一个类型跟原对象一样,其内容是原来对象元素的引用,换句话说,这个拷贝的对象本身是新的,但是它的内容不是.序列类型对象的浅拷贝是默认类型拷贝,并可以以下几种方式实施:(1)完全切片操作[:],(2)利用工厂函数,比如 list(),dict()等,(3)使用 copy 模块的 copy 函数.

当进行浅拷贝时,字符串被显式的拷贝,并新创建了一个字符串对象,而列
表元素只是把它的引用复制了一下,并不是它的成员.
>>> person = ['name', ['savings', 100.00]]
>>> hubby = person[:] # slice copy
>>> wifey = list(person) # fac func copy
>>> [id(x) for x in person, hubby, wifey]
[11826320, 12223552, 11850936]
>>> hubby[0] = 'joe'
>>> wifey[0] = 'jane'
>>> hubby, wifey
(['joe', ['savings', 100.0]], ['jane', ['savings', 100.0]])
>>> hubby[1][1] = 50.00
>>> hubby, wifey
(['joe', ['savings', 50.0]], ['jane', ['savings', 50.0]])

要得到一个完全拷贝或者说深拷贝--创建一个新的容器对象,
包含原有对象元素(引用)全新拷贝的引用--需要 copy.deepcopy()函数.
>>> person = ['name', ['savings', 100.00]]
>>> hubby = person
>>> import copy
>>> wifey = copy.deepcopy(person)
>>> [id(x) for x in person, hubby, wifey]
[12242056, 12242056, 12224232]
>>> hubby[0] = 'joe'
>>> wifey[0] = 'jane'
>>> hubby, wifey
(['joe', ['savings', 100.0]], ['jane', ['savings', 100.0]])
>>> hubby[1][1] = 50.00
>>> hubby, wifey
(['joe', ['savings', 50.0]], ['jane', ['savings', 100.0]])

8. 以下有几点关于拷贝操作的警告。
第一,非容器类型(比如数字,字符串和其他"原子"类型的对象,像代码,类型和 xrange 对象等)没有被拷贝一说,浅拷贝是用完全切片操作来完成的.
第二,如果元组变量只包含原子类型对象,对它的深拷贝将不会进行.如果我们把账户信息改成元组类型,那么即便按我们的要求使用深拷贝操作也只能得到一个浅拷贝:

9. copy 模块中只有两个函数可用:copy()进行浅拷贝操作,而 deepcopy()进行深拷贝操作.
分享到:
评论

相关推荐

    Python学习笔记--皮大庆.pdf.zip

    【Python学习笔记--皮大庆.pdf.zip】是一个针对初学者的Python编程教程,源自英文书籍《How to think like a computer scientist》。这本书以易懂的方式介绍了Python语言的基础知识,旨在帮助没有编程背景的人快速...

    02-python-列表-可变和不可变类型-元组-列表与元组的速度比较

    在Python编程语言中,列表和元组是两种非常重要的数据结构,它们在存储和操作数据时各有特点。本文将深入探讨这两个数据类型的异同,以及它们在执行速度上的差异。 首先,列表(List)是Python中的一个可变数据类型...

    python学习笔记1-(廖雪峰教程,菜鸟教程)python基础.pdf

    以上就是Python学习笔记1中的主要内容,这些基础知识构成了Python编程的基础,是学习更高级特性和应用的基础。对于初学者来说,熟练掌握这些内容是非常重要的。在后续的学习中,还会涉及到函数、模块、面向对象编程...

    python学习笔记

    ### Python学习笔记知识点详解 #### 一、程序基本编写方法 **1. 程序注释** - **单行注释**: 使用`#`符号。例如:`# 这是一条注释` - **多行注释**: 使用三个单引号`'''`或三个双引号`"""`包裹。例如: ```...

    python 学习笔记 元组.doc

    【Python 元组学习笔记】 元组在Python中是一种不可变序列,这意味着一旦创建,元组的元素不能被修改。元组通常用圆括号 `()` 包裹元素,但也可以不加括号,只要元素之间用逗号 `,` 分隔即可。 1. **创建和访问...

    Python 学习笔记.pdf

    这份学习笔记涵盖了Python的基本概念、数据类型、控制结构、函数、模块与包、面向对象编程等重要内容。下面将对这些知识点进行详细的解读。 ### 1. Python简介 - **Python** 是一种高级编程语言,因其简洁易读的...

    02-python-判断语句-循环-列表推导式-函数

    在这个"02-python-判断语句-循环-列表推导式-函数"的学习笔记中,我们将深入探讨Python中的四个核心概念:判断语句、循环、列表推导式以及函数。 **1. 判断语句** 在Python中,我们使用`if`、`elif`(else if)和`...

    Python学习笔记--皮大庆

    在Python学习笔记中,作者皮大庆介绍了Python的基础知识,包括程序、调试、程序语言与自然语言的关系、第一个程序的编写等。接着,笔记进入了变量、表达式、语句等基础概念的讲解,逐步深入到函数的定义、使用、参数...

    Python学习笔记(干货) 中文PDF完整版.pdf

    这份"Python学习笔记"涵盖了从环境搭建到基础语法,再到数据类型和控制结构等关键知识点,旨在为初学者提供全面的学习指导。 首先,1.1章节介绍了Python的基础,包括Python的起源和历史。Python是由Guido van ...

    Python-Core-50-Courses-master.rar

    这个压缩包可能包含了各种教程、笔记、练习和项目,旨在帮助学习者全面掌握Python编程基础。 1. **Python语法基础**:Python的基础始于它的语法,包括变量定义、数据类型(如整型、浮点型、字符串、布尔型、列表、...

    Python学习笔记.pdf

    【Python学习笔记】 Python是一种高级编程语言,以其简洁明了的语法和强大的功能著称。它的设计理念强调代码的可读性和简洁性,如"Beautiful is better than ugly"、"Explicit is better than implicit"等原则。...

    python_笔记.pdf

    - 列表(List)、元组(Tuple)、字典(Dictionary)是Python中常用的数据结构。 - 列表的索引操作、切片、合并、删除元素等方法,例如 `list[2]=abc`、`list.append()`、`del list[2]`。 - 字典的创建、键值对...

    python简明教程笔记 - IT168文库-.doc

    这篇简明教程笔记涵盖了Python的基础知识,包括安装与使用、程序编写、运算符优先级、控制流、函数、模块、数据结构(如列表、元组、字典)、序列、赋值与引用、类以及文件操作。 1. **安装与使用**: Python在...

    Python_学习笔记.docx

    2. **三元操作符**:Python中的三元操作符是`条件表达式`,如`small = x if x ,它根据条件`x 的结果来决定赋值`x`或`y`给`small`。 3. **循环结构**: - `while`循环:当给定的条件为真时,重复执行循环体内的...

    python学习笔记.docx

    【Python学习笔记】 Python是一种高级、通用的编程语言,以其简洁明了的语法和强大的功能而受到广大程序员的青睐。Python被广泛应用于Web开发、数据分析、人工智能、自动化脚本等多个领域。以下是一些关于Python的...

    python学习笔记.zip

    这份"python学习笔记.zip"包含的"python-master.zip"子文件,很可能是一个Python学习资源的压缩包,可能包括教程、代码示例、项目实践等内容,旨在帮助初学者或者有经验的开发者深化对Python的理解。 Python语言的...

    python学习笔记.pdf

    在这份《python学习笔记.pdf》中,记录了Python编程的基础知识和一些技巧,内容涵盖了字符串处理、变量操作、数据结构、循环、条件判断等方面。以下是对学习笔记中提到知识点的详细说明。 ### 字符串处理 在Python...

Global site tag (gtag.js) - Google Analytics