Python教程(2.6)——list和tuple简介
Python中内置的类型有list和tuple。
List
list类似于C/C++的数组,可以存储多个数字。例如你可能会需要存储一个班里所有人的名字。这时就可以用到list。list中存储的数据叫做元素(element)。
创建list
在Python中,使用[...]表示list:
>>> names = ['Amy', 'Bob', 'Charles']
names是一个list类型的变量,里面有'Amy'、'Bob'和'Charles'三个元素。
可以用[]表示一个空list:
>>> names = []
注意:
1. []里的元素(如果有两个即以上)需要用逗号(,)分隔。
2. list中的元素类型可以不同:
>>> L = [123, False, 'spam']
访问list中的元素
像字符串一样,使用l[index]获取l(类型为list)的索引为index的元素:
>>> names[0]
'Amy'
>>> names[1]
'Bob'
>>> names[2]
'Charles'
也可以使用负索引,具体不细说了,上一章已经讲过。
设置list的元素
要设置list索引为index的元素,需要先拿到,然后直接赋值即可:
>>> names = ['Amy', 'Bob', 'Charles']
>>> names[0] = 'Tom'
>>> names
['Tom', 'Bob', 'Charles']
获取list长度
像字符串一样,使用len()获取list长度:
>>> len(names)
3
[]的长度为0:
>>> len([])
0
>>> names = []
>>> len(names)
0
向list追加元素
list是Python的对象,在对象中有一个叫做“方法”的概念,“方法”就是指对象的函数。list对象有append()方法,可以向list追加元素:
>>> names.append('Donald')
>>> names
['Amy', 'Bob', 'Charles', 'Donald']
删除list元素
List对象有pop()方法,可以删除指定位置上的元素:
>>> names = ['Amy', 'Bob', 'Charles']
>>> names.pop(1)
['Amy', 'Charles']
>>> names.pop()
['Amy']
pop(index)删除索引为index的元素,pop()删除最后一个元素。注意pop()方法返回删除相应元素后的list,这就是为什么l.pop()和l.pop(index)会显示结果。
清空list
清空list很简单,只要设为[]就好了:
>>> names = []
>>> names
[]
list嵌套
前面说过,list的每个元素可以不一样。list甚至可以包含list:
>>> positions = [
... [0, 0, 0],
... [0, 1, 0],
... [2, 1, 5]
... ]
>>> positions
[[0, 0, 0], [0, 1, 0], [2, 1, 5]]
在这个例子中,我们获取positions中的元素,元素类型也是list:
>>> positions[0]
[0, 0, 0]
>>> positions[1]
[0, 1, 0]
>>> positions[2]
[2, 1, 5]
如果还要获取以上list中的元素呢?假设要获取positions[0]的第1个元素,一般的list我们直接使用[0]来获取第一个元素,对吧?这里也一样,直接把[0]加在positions[0]后面即可:
>>> positions[0][0]
0
其它数也是一样的:
>>> positions[1][1]
1
>>> positions[2][0]
2
Tuple简介
Python还支持一种叫做tuple的数据类型。Tuple和list类似,但是不可变(immutable)的。
创建tuple
使用(...)表示tuple:
>>> cubes = (1, 8, 27, 64)
空tuple可以用()表示:
>>> cubes = ()
但是如果是一个元素的tuple呢?好像是这样写的:
>>> cubes = (1)
但是现在检查cubes会发现:
>>> cubes
1
cubes是个int!这里的(1)被看作整数1了。
因此,需要在()中加一个逗号(,),表示这是一个tuple:
>>> cubes = (1,)
>>> cubes
(1,)
Python在显示一个元素的tuple时,也会加一个逗号。
其他操作
除不能设置、追加、删除元素外,tuple的操作和list相似。
注意
虽然说tuple是不可变的,但是也有一些奇怪的地方。下面是一个含有list的tuple:
>>> t = (1, 2, [1, 2])
有下列语句:
>>> t[2][0] = 10
>>> t
(1, 2, [10, 2])
很奇怪吧,tuple的元素怎么被改变了?!
答案是,t被创建时,里面的元素分别是1、2、[1, 2]。后来我们把[1, 2]的内容改成了[10, 2],看起来t的元素变了,但这里的“不变”指指向不变,虽然t[2]的内容改变了,但是一直是同一个list。
但是像下面这样就不行了:
>>> t[2] = 10
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
(此文未完,原文链接:http://www.cnblogs.com/collectionne/p/6878075.html)
Python教程(2.6)——list和tuple简介的更多相关文章
- 廖老师的Python教程——Python简介
一直想了解下Python,今儿在外面办事排队的时候,打开了廖老师的官网,找到了Python教程.虽然只是一篇关于Python的简介,但是通过将Python的特性与C进行对比,很生动地归纳了Python ...
- 《简明python教程》笔记一
读<简明Python教程>笔记: 本书的官方网站是www.byteofpython.info 安装就不说了,网上很多,这里就记录下我在安装时的问题,首先到python官网下载,选好安装路 ...
- python入门灵魂5问--python学习路线,python教程,python学哪些,python怎么学,python学到什么程度
一.python入门简介 对于刚接触python编程或者想学习python自动化的人来说,基本都会有以下python入门灵魂5问--python学习路线,python教程,python学哪些,pyth ...
- Python教程(0)——介绍
What's Python? Python是一种编程语言,由荷兰人Guido van Rossum于1989年,为打发无聊的圣诞节而开发的. Python的优点是语法简洁,代码量比C/C++.Java ...
- 笔记|《简明Python教程》:编程小白的第一本python入门书
<简明Python教程>这本书是初级的Python入门教材,初级内容基本覆盖,对高级内容没有做深入纠结.适合刚接触Python的新手,行文比较简洁轻松,读起来也比较顺畅. 下面是我根据各个 ...
- 学习笔记《简明python教程》
学习笔记<简明python教程> 体会:言简意赅,很适合新手入门 2018年3月14日21:45:59 1.global 语句 在不使用 global 语句的情况下,不可能为一个定义于函数 ...
- 【转】简明 Python 教程
原文网址:http://woodpecker.org.cn/abyteofpython_cn/chinese/ 简明 Python 教程Swaroop, C. H. 著沈洁元 译www.byteof ...
- 『Python基础-9』元祖 (tuple)
『Python基础-9』元祖 (tuple) 目录: 元祖的基本概念 创建元祖 将列表转化为元组 查询元组 更新元组 删除元组 1. 元祖的基本概念 元祖可以理解为,不可变的列表 元祖使用小括号括起所 ...
- 廖雪峰老师Python教程读后笔记
廖老师网站:http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000 花几天时间看了廖老师的 ...
随机推荐
- PLSQL创建定时任务
在使用oracle最匹配的工具plsql的时候,如果用plsql创建定时器呢?下面我简单介绍使用工具创建定时器的方法: 1.创建任务执行的存储过程,如名称为YxtestJob,向测试表中插入数据 cr ...
- 怎么看iOS human interface guidelines中的user control原则
最近离开了老东家,整理整理思路,因为一直做的是微信公众号相关的产品对app的东西有一段时间没有做过了,所以又看了一遍iOS human interface guidelines,看到user cont ...
- Entity Framework查询注意
首先我们看下where的方法,直接查看定义(定义如下),其实一种是对IEnumerable的扩展,一种是对IQueryable的扩展,直接看最常用的,其实区别就在IEnumerable的扩展的参数是系 ...
- MongoDB基础教程系列--第九篇 MongoDB 分片
1.分片介绍 分片(sharding)是将数据拆分,将其分散存到不同机器上的过程.MongoDB 支持自动分片,可以使数据库架构对应用程序不可见.对于应用程序来说,好像始终在使用一个单机的 Mongo ...
- list、set、map区别
list是有序且重复的; list中的数据都是按照写入的顺序排列的,存入list的数据用add方法写入; list可以用循环遍历list以达到获取全部数据的目的,同时也可以通过下标get(index) ...
- python——面向对象相关
其他相关 一.isinstance(obj, cls) 检查是否obj是否是类 cls 的对象 1 2 3 4 5 6 class Foo(object): pass obj = Foo( ...
- python——面向对象进阶
类的成员 类的成员可以分为三大类:字段.方法和属性 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存中就有多少个普通字段.而其他的成员,则都是保存在类中,即:无论对象的 ...
- 【外文翻译】使用Timer类去调度任务 ——java
使用Timer类去调度任务 --java 原文地址:https://dzone.com/articles/using-timer-class-to-schedule-tasks 原文作者:Jay Sr ...
- 一条sql语句引发mysql不停创建临时表的问题解决..coping to tmp table on desk
(不懂临时表的先看 MySQL临时表 ) 首先,临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间.因此在不同的连接中可以创建同名的临时表,并且操作属于本连接的临时表. ...
- 微信小程序框架
框架 小程序开发框架的目标是通过尽可能简单.高效的方式让开发者可以在微信中开发具有原生 APP 体验的服务. 框架提供了自己的视图层描述语言 WXML 和 WXSS,以及基于 JavaScript 的 ...