01 Python 创建list

Python 内置的一种数据结构类型是列表:list !list 是一种有序的集合,可以随时添加和删除其中的元素。是数学意义上的有序集合, 也就是说,list 中的元素是按照顺序排列的。

构造 list ,直接用 [ ] 把 list 所有的元素包括起来,就是一个 list 对象。 通常情况下,会把 list 赋值给一个变量,这样就可以通过变量来引用 list。

由于 Python 是动态语言, 所以 list 中包含的元素并不要求都必须是同一种数据类型,完全可以在 list 中包含各种数据类型:

A = ['one', 100, True]

一个元素也没有的 list , 就是空 list。

小练习:假设班里有3名同学:Adam,Lisa和Bart,他们的成绩分别是 95.5,85 和 59,请按照 名字, 分数, 名字, 分数... 的顺序按照分数从高到低用一个list表示,然后打印出来。

>>>L = ['Adam', 95.5, 'Lisa', 85, 'Bart', 59]

>>>print L

02 Python 按照索引访问 list

list 是一个有序的集合,那么我们就可以用一个 list 按分数从高到低表示出班里的同学:

L = ['Adam', 'Lisa', 'Bart']

从 list 中获取 N 位同学就是通过索引来获取 list 中的指定元素。但是一定不能越界! 这点跟 C 的数组类似。 没学过 C 的就先自己体会吧。

03 Python 之倒序访问 list

还是以上面的班级的 3 个同学为例:

L = ['Adam', 'Lisa', 'Bart']

如果要获取最后一位同学,那么是不是要知道 list 中有多少元素,3 个元素,那么就是 L[2] , 如果我们使用倒序,则可以这样 L[-1] 表示倒数第一个, L[-2] 表示倒数第二个。

>>>print L[-1]

Bart

当然, 这样使用的时候, 也不能越界!

04 Python 之添加新元素

如果这个时候, 有一位新同学转到班上来,那么该怎样把新同学添加到现在的 list 中呢?

方法一: 就是使用 list 的 append() 方法,把新同学添加到 list 的末尾。 记住 append() 是添加到末尾。

>>>L = ['Adam', 'Lisa', 'Bart']

>>>L.append('Paul')

>>>print L

['Adam', 'Lisa', 'Bart', 'Paul']

方法二: 就是 list 中 insert() 方法,它接受两个参数,第一个参数是索引号,第二个参数是待添加的新元素:

>>>L = ['Adam', 'Lisa', 'Bart']

>>>L.insert(0, 'Paul')

>>>print L

['Adam', 'Lisa', 'Bart', 'Paul']

这样就可以将 Paul 添加到索引为 0 的位置了。

05 Python 从 list 中删除元素

现在说是 Paul 转来班上, 那么 Paul 如果后来又要转走, 那么怎么从现在的 list 中删除呢?

如果 Paul 在最后一个, 那么可以用 list 的 pop() 方法删除:

>>>L = ['Adam', 'Lisa', 'Bart', 'Paul']

>>>L.pop()

'Paul'

>>>print L

['Adam', 'Lisa', 'Bart']

从而得知, pop() 方法总是删掉 list 的最后一个元素,而且还会返回这个元素,所以在执行 L.pop() 之后会打印出 'Paul'。那么不在最后一个位置应该怎么破呢?

例如我们要删除 'Lisa'

>>>L = ['Adam', 'Lisa', 'Bart', 'Paul']

>>>L.pop(1)

'Lisa'

>>>print L

['Adam','Bart', 'Paul']

把索引值填入 pop() 的参数中就可以了。

练习题:注意下面的编辑器代码中 list 如下:

L = ['Adam', 'Lisa', 'Paul', 'Bart']

Paul的索引是2,Bart的索引是3,如果我们要把Paul和Bart都删掉,请解释下面的代码为什么不能正确运行:

L.pop(2)

L.pop(3)

怎样调整代码可以把Paul和Bart都正确删除掉?

L = ['Adam', 'Lisa', 'Paul', 'Bart']

L.pop(2)

L.pop(3)

print L

06 Python 中替换元素

如果,Bart同学要转学走了,碰巧来了一个Paul同学,要更新班级成员名单,我们可以先把Bart删掉,再把Paul添加进来。

还可以直接用 Paul 将 Bart 换掉:

>>> L[2] = 'Paul'

>>> print L

L = ['Adam', 'Lisa', 'Paul']

对 list 中的某一个索引值, 就可以直接用新的元素替换原来的元素, list 包含的元素个数不变。

使用倒序替换掉也行:

>>> L[-1] = 'Paul'

07 Python 之创建 tuple

tuple 是另一种有序的列表, 中文翻译为 “元组”。 tuple 和 list 非常相似, 但是 tuple 一但建立完成, 就不能修改了。使用 tuple 创建:

>>>T = ('Adam', 'Lisa', 'Paul')

创建 tuple 和创建 list 唯一不同之处是用 () 代替了 [ ] 。那么现在这个 T 就不能改变了, tuple 没有 append() 方法, 也没有 pop() 和 insert() 方法。

获取 tuple 元素的方式和 list 是一模一样的,我们可以正常使用 T[0],T[-1]等索引方式访问元素,但是不能赋值成别的元素。

08 Python 之创建单元素 tuple

tuple 和 list 一样,可以包含 0 个、1个、任意多个元素。 0 个元素的 tuple , 也就是空 tuple, 直接用 () 表示:

>>> t = ()

>>> print t

()

包含一个元素的:

>>> t = (1)

>>> print t

1

结果是 1 , 而不是 () ;因为在 Python 中, () 既可以表示 tuple, 又可以作为括号表示运算时的优先级,结果 (1) 被 Python 解释器计算出结果为 1 。

正因为这样的歧义, 所以 Python 规定, 单元素 tuple 要多加一个逗号 “,”,这样就避免的歧义:

>>> t = (1,)

>>> print t

(1,)

Python在打印单元素tuple时,也自动添加了一个“,”,为了说明这是一个tuple。

多元素 tuple 加不加这个元素,效果都是一样的。

09 Python 之 “可变” 的 tuple

前面说到了创建了 tuple 就不能修改,那么现在看看 “可变” 的 tuple:

>>> t = ('a', 'b', ['A', 'B'])

然后我们通过 t[2] 拿到 tuple 中的 list 对象:

>>> L = t[2]

然后修改一下 list 中的两个元素:

>>> L[0] = 'X'

>>> L[1] = 'Y'

>>> print t

('a', 'b', ['X', 'Y'])

结果是变了、为什么变?

其实改变的不是 tuple ,而是 list 的元素。

tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!

练习:

定义了tuple:

t = ('a', 'b', ['A', 'B'])

由于 t 包含一个list元素,导致tuple的内容是可变的。能否修改上述代码,让tuple内容不可变?

t = ('a', 'b', ('A', 'B'))

print t

python tuple类型和list_Python 04_List 和 Tuple 类型相关推荐

  1. python tuple类型和list_Python 入门(四)List和Tuple类型

    我们还是用一个list按分数从高到低表示出班里的3个同学: >>> L = ['Adam', 'Lisa', 'Bart'] 这时,老师说,请分数最低的同学站出来. 要写代码完成这个 ...

  2. Python数据类型、Numpy数据类型和Pytorch中的tensor类型间的相互转化

    数据类型包括Python数据类型.Numpy数据类型和Pytorch中的tensor,Pytorch中的tensor又包括CPU上的数据类型和GPU上的数据类型. 一.Python数据类型 Pytho ...

  3. [转载] python自定义异常类型和raise抛出异常

    参考链接: Python自定义异常 实际开发中,有时候系统提供的异常类型不能满足开发的需求.这时候你可以通过创建一个新的异常类来拥有自己的异常.异常类继承自 Exception 类,可以直接继承,或者 ...

  4. python set类型和set()函数作用、用法等集合,让你学会用set

    本文主要收集整理Python set的类型.作用.用法等知识点的收集整理,Python set是什么意思,看完本文的文章集合基本就会使用Python set了. 1.Python-set() 函数 2 ...

  5. Python基础必掌握的5种数据类型和8种内置函数基本操作

    今天跟着我一起学习/复习一下Python语法的5种基本数据类型和8种数据基本操作.如果你已经掌握了这块内容,也建议跟着文中代码进行操作加深印象巩固学习成果. 整套学习自学教程中应用的数据都是<三 ...

  6. python中元组的使用_Python当中tuple元组的使用

    Python Python开发 Python语言 Python当中tuple元组的使用 python当中元组的使用比起list列表来说就简单多了!因为tuple一般是不能进行修改的,一旦进行定义则无法 ...

  7. python list append tuple_Python之list、tuple、dict、set

    参考原文 PS:来看看Python中比较特殊的几种数据类型list.tuple.dict.set list list(列表)是Python内置的一种数据类型,它是一种有序.可变的集合,可以随时添加和删 ...

  8. python知识:json格式文本;异常处理;字符串处理;unicode类型和str类型转换

    python知识:json格式文本:异常处理:字符串处理:unicode类型和str类型转换 参考文章: (1)python知识:json格式文本:异常处理:字符串处理:unicode类型和str类型 ...

  9. Python中编码问题:u'\xe6\x97\xa0\xe5\x90\x8d' 类型和 ‘\u559c\u6b22\u4e00\u4e2a\u4eba ’ 转为utf-8的解决办法...

    Python中编码问题:u'\xe6\x97\xa0\xe5\x90\x8d' 类型和 '\u559c\u6b22\u4e00\u4e2a\u4eba ' 转为utf-8的解决办法 相信小伙伴们遇到过 ...

最新文章

  1. linux实战案例作业(1)
  2. 在Cloudshare上使用PAL=〉系统检查及初始化
  3. “中能融合杯”线下赛感悟
  4. 音视频技术开发周刊 | 194
  5. Abp vNext 后台作业hangfire
  6. 尾调用优化 java_为什么JVM仍然不支持尾调用优化?
  7. 够学习一辈子的生活经典
  8. 黑客马拉松 招募_我如何赢得第一次黑客马拉松-研究,设计和编码的2个狂野日子
  9. bat 脚本清空窗口内容_tomcat9.0启动脚本startup.bat的分析
  10. 如何批量查问PR值、百度权重、百度快照及收录量,用BlueCatTools批量网站查询工具
  11. mariadb mysql 配置文件_Mariadb配置文件优化参数(仅供参考)
  12. 模块参考资料-硬件资料-Air720UG/UH
  13. 第049篇:VBA之合并单元格、取消合并单元格并保留原来的数据
  14. python调用大漠多线程_大漠插件多线程绑定窗口登录游戏、程序全停、单停、恢复...
  15. android 模拟自动点击,自动点击模拟器app
  16. 学生选课系统C语言系统的说明文档,C语言学生选课系统(代码)
  17. 计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」
  18. 两个主要问题将决定微信支付成败
  19. 渗透测试工程师的职业发展
  20. selenium+python 输入含有span标签的标题

热门文章

  1. rsync 安装使用详解
  2. POJ2391(最大流Isap+Floyd+二分)
  3. Asp.net MVC3.0 入门指南 7.1 展示查找页面
  4. PHP函数篇之掌握ord()与chr()函数应用
  5. 影响LAN/WAN方向流量的方法
  6. AIX 用户密码永不过期
  7. 1.1计算机系统简介
  8. MACD 的数学解释
  9. 关于 PHP 与 MYSQL的链接
  10. mysql创建字段非空NOT NULL的好处