认识Python 列表和元组
列表用方括号 l=[['xyz',123], 'abc', 3140000000.0, (23+1.3j), 'ddd']
元组用圆括号 t=(['xyz', 123],'abc', 3140000000.0, (23+1.3j), 'ddd')
这两个序列类型很相似,一开始没有想明白python为什么要设置两个相似的序列类型,在看完《python核心编程》的讲解后有了进一步的认识,特做此笔记,重点讲述不同之处及元组的不可变性质。
二者的相似处:
元组的对象和序列类型操作符、内建函数和列表的完全一样。如 切片、合并、多次拷贝、检查一个对象是否属于一个元组以及进行元组之间的比较等。
元组的切片操作跟列表一样,用方括号作为切片操符([]),里面写上索引值或者索引范围。
>>> 'abc' in t
True
>>> t[0][1]
123
>>> t[1:]
('abc', 3140000000.0, (23+1.3j), 'ddd')
二者不同处:
- 元组是一种不可变类型,意味着一个元组一旦定义,不能更新或者改变元组的元素
因为元组是容器对象,很多时候你想改变的只是这个容器中的一个或者多个元素,不幸的
是这是不可能的
- 元组是常见的默认集合类型
所有的多对象的,逗号分隔的,没有明确用符号定义的,比如说像用方括号表示列表和用
圆括号表示元组一样,等等这些集合默认的类型都是元组>>> 'abc', -4.24e93, 18+6.6j, 'xyz'
('abc', -4.24e+093, (18+6.6j), 'xyz')
>>>
>>> x, y = 1, 2
>>> x, y
(1, 2)- 所有函数返回的多对象(不包括有符号封装的)都是元组类型
- 只有一个元素的元组需要在元组分隔符里面加上一个逗号,用以防止跟普通的分组操作符混淆
>>> o=['aaa']
>>> type(o)
<type 'list'>
>>> a=('abc')
>>> type(a)
<type 'str'>
>>> a=('abc',)
>>> type(a)
<type 'tuple'>
元组是不可变类型,如何更新元组
1.子元组的拼凑
>>> tup1 = (12, 34.56)
>>> tup2 = ('abc', 'xyz')
>>> tup3 = tup1 + tup2
>>> tup3
(12, 34.56, 'abc', 'xyz')
2.可以用一个简单的函数调用把一个元组变成一个可变的列表,即可调用tuple()和list()函数对列表和元组间相互转化,以达到不同的目的
3.若元组的一个元素是一个可变类型如列表,可以更新该列表元素以达到"更新"列表的目的
>>> tp = (['xyz', 123], 23, -103.4)
>>> tp
(['xyz', 123], 23, -103.4)
>>> tp[0][1]
123
>>> tp[0][1] = ['abc', 'def']
>>> tp
(['xyz', ['abc', 'def']], 23, -103.4)
如何移除一个元组的元素以及元组本身
删除一个单独的元组元素是不可能的,当然,把不需要的元素丢弃后, 重新组成一个元组是没有问题的。
下面看看《python核心编程》关于列表与元组的核心笔记
核心笔记:列表 VS 元组
一个经常会被问到的问题是,"为什么我们要区分元组和列表变量?"这个问题也可以被表述为“我们真的需要两个相似的序列类型吗?”,一个原因是在有些情况下,使用其中的一种类型要优于使用另一种类型。
最好使用不可变类型变量的一个情况是,如果你在维护一些敏感的数据,并且需要把这些数据传递给一个并不了解的函数(或许是一个根本不是你写的API),作为一个只负责一个软件某一部分的工程师,如果你确信你的数据不会被调用的函数篡改,你会觉得安全了许多。
一个需要可变类型参数的例子是,如果你在管理动态数据集合时。你需要先把它们创建出来,逐渐地或者不定期的添加它们,或者有时还要移除一些单个的元素。这是一个必须使用可变类型对象的典型例子。幸运的是,通过内建的list()和tuple()转换函数,你可以非常轻松的在两者之间进行转换.
list()和tuple()函数允许你用一个列表来创建一个元组,反之亦然.如果你有一个元组变量,但你需要一个列表变量因为你要更新一下它的对象,这时list()函数就是你最好的帮手.如果你有一个列表变量,并且想把它传递给一个函数,或许一个API,而你又不想让任何人弄乱你的数据,这时tuple()函数就非常有用。
认识Python 列表和元组的更多相关文章
- Python列表、元组、字典和字符串的常用函数
Python列表.元组.字典和字符串的常用函数 一.列表方法 1.ls.extend(object) 向列表ls中插入object中的每个元素,object可以是字符串,元组和列表(字符串“abc”中 ...
- python列表与元组的用法
python列表与元组的用法 目录: 列表的用法: 1.增 append + extend 2.删 del remove 3.改 insert 4.查 index 5.反向 ...
- (转)python 列表与元组的操作简介
python 列表与元组的操作简介 原文:https://www.cnblogs.com/QG-whz/p/4782809.html 阅读目录 列表 list函数 列表的基本操作 列表方法 元组 tu ...
- Python列表和元组
Python是没有数组的概念,但是和数组比较相近的概念是列表和元素. 下面两个例子展示列表和元组. # coding=utf-8 # 元组 students = ('小明', '小黄', '小李', ...
- #9 Python列表和元组
前言 Python中有6种序列:列表.元组.字符串.Unicode字符串.buffer对象和xrange对象.序列通用操作包括:索引.切片.长度.加.乘.最大值.最小值,遍历和检查成员.虽然Pytho ...
- Python: 列表,元组,字典的区别
Python中有3种内建的数据结构:列表,元组和字典 1.列表 list是处理一组有序项目的数据结构,即可以在一个列表中存储一个序列的项目.列表中项目应该包括在方括号中,这样python就知道是在指明 ...
- [python01] python列表,元组对比Erlang的区别总结
数据结构是通过某种方式组织在一起的数据元素的集合,这些数据元素可以是数字,字符,甚至可以是其他的数据结构. python最基本的数据结构是sequence(序列):6种内建的序列:列表,元组,字符串, ...
- python 列表,元组,字符串方法和属性
python序列包含列表[].元组().字符串三种 -------列表-------------- 一.列表基本内容 1.建立:a=[1,2,3,5],通过[ , ,], >>>b= ...
- Python 列表、元组、字典及集合操作详解
一.列表 列表是Python中最基本的数据结构,是最常用的Python数据类型,列表的数据项不需要具有相同的类型 列表是一种有序的集合,可以随时添加和删除其中的元素 列表的索引从0开始 1.创建列表 ...
随机推荐
- Delphi【异常捕获以及Exe调用方法方法】
通过测试.exe程序调用dll外部方法,通过dll调用主程序.exe方法实现. Showmessage('进入方法?这里是dll里LoginElecReq'); try ShellExecute( ...
- 使用js如何设置、获取盒模型的宽和高
第一种: dom.style.width/height 这种方法只能获取使用内联样式的元素的宽和高. 第二种: dom.currentStyle.width/height 这种方法获取的是浏览器渲染以 ...
- h5软键盘弹起 底部按钮被顶起问题解决
解决思路: 当键盘弹起时隐藏掉按钮,键盘隐藏时按钮显示 监测键盘是否弹起(浏览器页面是否发生变化) 代码: 1.定义一个底部按钮 <div class="returnbtn" ...
- Java的四个标记接口:Serializable、Cloneable、RandomAccess和Remote接口
一.概述 标记接口是一些没有属性和方法的接口,也是一种设计思想.Java中的一个标记接口表示的的是一种类的特性,实现了该标记接口的类则具有该特性.如实现了Serializable接口的类,表示这个类的 ...
- 苹果手机的SB系列(3)超级烦人的账户解锁?
不知道大家有没有这种体验,Iphone 每隔一段时间后账户就被锁定了,也不告诉你原因,就是要解锁? 我怎么感觉比做的比支付宝差多了,我注册支付宝十几年,也没有动不动就告诉了有安全原因,要解锁,要重置密 ...
- 01-Devops核心要点及Kubernetes架构概述
Brog 自动装箱,自动修复,水平扩展,服务发现和负载均衡,自动发布和回滚 密钥和配置管理,存储编排,批量处理执行
- 关于$(function(){})的问题
在开发过程中遇到了一个问题 , 页面需要一个列表展示 , 为了方便数据的获取和渲染 ,就选择了easy UI的网格来做 , 这个时候问题就出现了 , 那就是网格需要触发的函数不写在$(function ...
- Intellij Idea 解决字符乱码、设定颜色主题、字体
1.写入字符编码设置 2.调整mintty 字体.主题
- Cronolog日志分割、定时清理
阿里云发送短信提示服务器磁盘占用到80%警报短信 经过排查发现tomcat日志文件达到10个多G,手动删除过久的日志文件后恢复到50% 但是catalina.out文件还有6个G 解决方法 一.安装C ...
- 解决Python图片处理模块pillow使用中出现的问题
最近爬一个电影票房的网站(url:http://58921.com/alltime),上面总票房里面其实是一张图片,那么我需要把图片识别成文字,来获取票房数据. 我头脑里第一想到的解决方案就是要用 ...