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简介的更多相关文章

  1. 廖老师的Python教程——Python简介

    一直想了解下Python,今儿在外面办事排队的时候,打开了廖老师的官网,找到了Python教程.虽然只是一篇关于Python的简介,但是通过将Python的特性与C进行对比,很生动地归纳了Python ...

  2. 《简明python教程》笔记一

    读<简明Python教程>笔记: 本书的官方网站是www.byteofpython.info  安装就不说了,网上很多,这里就记录下我在安装时的问题,首先到python官网下载,选好安装路 ...

  3. python入门灵魂5问--python学习路线,python教程,python学哪些,python怎么学,python学到什么程度

    一.python入门简介 对于刚接触python编程或者想学习python自动化的人来说,基本都会有以下python入门灵魂5问--python学习路线,python教程,python学哪些,pyth ...

  4. Python教程(0)——介绍

    What's Python? Python是一种编程语言,由荷兰人Guido van Rossum于1989年,为打发无聊的圣诞节而开发的. Python的优点是语法简洁,代码量比C/C++.Java ...

  5. 笔记|《简明Python教程》:编程小白的第一本python入门书

    <简明Python教程>这本书是初级的Python入门教材,初级内容基本覆盖,对高级内容没有做深入纠结.适合刚接触Python的新手,行文比较简洁轻松,读起来也比较顺畅. 下面是我根据各个 ...

  6. 学习笔记《简明python教程》

    学习笔记<简明python教程> 体会:言简意赅,很适合新手入门 2018年3月14日21:45:59 1.global 语句 在不使用 global 语句的情况下,不可能为一个定义于函数 ...

  7. 【转】简明 Python 教程

    原文网址:http://woodpecker.org.cn/abyteofpython_cn/chinese/ 简明 Python 教程Swaroop, C. H. 著沈洁元  译www.byteof ...

  8. 『Python基础-9』元祖 (tuple)

    『Python基础-9』元祖 (tuple) 目录: 元祖的基本概念 创建元祖 将列表转化为元组 查询元组 更新元组 删除元组 1. 元祖的基本概念 元祖可以理解为,不可变的列表 元祖使用小括号括起所 ...

  9. 廖雪峰老师Python教程读后笔记

    廖老师网站:http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000 花几天时间看了廖老师的 ...

随机推荐

  1. 【HDOJ 1215】七夕节

    七夕节 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submissio ...

  2. 关于Java内存管理的几个小技巧

    这里将介绍几则Java内存管理的小技巧,让你让你从Java入门开始告别陋习,为Java程序提速.有不少人都说"Java完了,只等着衰亡吧!",为什么呢?最简单的的例子就是Java做 ...

  3. 仿QQ空间动态界面分享

    先看看效果: 用极少的代码实现了 动态详情 及 二级评论 的 数据获取与处理 和 UI显示与交互,并且高解耦.高复用.高灵活. 动态列表界面MomentListFragment支持 下拉刷新与上拉加载 ...

  4. jdk源码剖析五:JDK8-废弃永久代(PermGen)迎来元空间(Metaspace)

    目录 1.背景 2.为什么废弃永久代(PermGen) 3.深入理解元空间(Metaspace) 4.总结 ========正文分割线===== 一.背景 1.1 永久代(PermGen)在哪里? 根 ...

  5. bootstrap快速入门笔记(六)-代码

    一,内联代码<code>:For example, <code><section></code> should be wrapped as inline ...

  6. poj3160强连通分量加dfs

    After retirement as contestant from WHU ACM Team, flymouse volunteered to do the odds and ends such ...

  7. 微信小程序(兼容性问题)

    兼容 小程序的功能不断的增加,但是旧版本的微信客户端并不支持新功能,所以在使用这些新能力的时候需要做兼容. 文档会在组件,API等页面描述中带上各个功能所支持的版本号. 可以通过 wx.getSyst ...

  8. Python之返回函数

    高阶函数可以把函数作为一个结果值返回 举例说明 普通的求积函数是 vim day5-6.py #!/usr/bin/python # -*- coding:utf-8 -*- def product( ...

  9. Mysql求百分比

    根据相应条件抽出相应count数(myCount) 抽出总count数(totalCount) 计算百分比:myCount / totalCount * 100 四舍五入:使用ROUND函数ROUND ...

  10. redis集群安装部署

    (要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下) 192.168.1.160:7000 192. ...