python_元组
元组
元组是用圆括号括起来的,其中的元素之间用逗号隔开。(都是英文半角)
>>># 变量引用 str
>>> s = "abc"
>>> s
'abc' >>>#如果这样写,就会是...
>>> t = 123,'abc',["come","here"]
>>> t
(123, 'abc', ['come', 'here'])
上面例子中看到的变量 t,并没有报错,也没有“最后一个有效”,而是将对象做为一个新的数据类型:tuple(元组),赋值给了变量 t。
元组是用圆括号括起来的,其中的元素之间用逗号隔开。(都是英文半角)
元组中的元素类型是任意的 Python 数据。
这种类型,可以歪着想,所谓“元”组,就是用“圆”括号啦。
其实,你不应该对元组陌生,还记得前面讲述字符串的格式化输出时,有这样一种方式:
print "I love %s, and I am a %s" % ('python', 'programmer') I love Python, and I am a programmer
这里的圆括号,就是一个元组。
显然,tuple 是一种序列类型的数据,这点上跟 list/str 类似。它的特点就是其中的元素不能更改,这点上跟 list 不同,倒是跟 str 类似;它的元素又可以是任何类型的数据,这点上跟 list 相同,但不同于 str。
>>> t = 1,"23",[123,"abc"],("python","learn") #元素多样性,近 list
>>> t
(1, '23', [123, 'abc'], ('python', 'learn'))
>>> t[0] = 8 #不能原地修改,近 str
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> t.append("no")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'append'
>>>
从上面的简单比较似乎可以认为,tuple 就是一个融合了部分 list 和部分 str 属性的杂交产物。此言有理。
索引和切片
因为前面有了关于列表和字符串的知识,它们都是序列类型,元组也是。因此,元组的基本操作就和它们是一样的。
例如:
>>> t
(1, '23', [123, 'abc'], ('python', 'learn'))
>>> t[2]
[123, 'abc']
>>> t[1:]
('23', [123, 'abc'], ('python', 'learn')) >>> t[2][0] #还能这样呀,哦对了,list 中也能这样
123
>>> t[3][1]
'learn'
关于序列的基本操作在 tuple 上的表现,就不一一展示了。看官可以去试试。
但是这里要特别提醒,如果一个元组中只有一个元素的时候,应该在该元素后面加一个半角的英文逗号。
>>> a = (3)
>>> type(a)
<type 'int'> >>> b = (3,)
>>> type(b)
<type 'tuple'>
以上面的例子说明,如果不加那个逗号,就不是元组,加了才是。这也是为了避免让 Python 误解你要表达的内容。
顺便补充:如果要想看一个对象是什么类型,可以使用 type()函数,然后就返回该对象的类型。
所有在 list 中可以修改 list 的方法,在 tuple 中,都失效。
分别用 list()和 tuple()能够实现两者的转化:
>>> t
(1, '23', [123, 'abc'], ('python', 'learn'))
>>> tls = list(t) #tuple-->list
>>> tls
[1, '23', [123, 'abc'], ('python', 'learn')] >>> t_tuple = tuple(tls) #list-->tuple
>>> t_tuple
(1, '23', [123, 'abc'], ('python', 'learn'))
tuple 用在哪里?
既然它是 list 和 str 的杂合,它有什么用途呢?不是用 list 和 str 都可以了吗?
在很多时候,的确是用 list 和 str 都可以了。但是,看官不要忘记,我们用计算机语言解决的问题不都是简单问题,就如同我们的自然语言一样,虽然有的词汇看似可有可无,用别的也能替换之,但是我们依然需要在某些情况下使用它们.
一般认为,tuple 有这类特点,并且也是它使用的情景:
- Tuple 比 list 操作速度快。如果您定义了一个值的常量集,并且唯一要用它做的是不断地遍历它,请使用 tuple 代替 list。
- 如果对不需要修改的数据进行 “写保护”,可以使代码更安全。使用 tuple 而不是 list 如同拥有一个隐含的 assert 语句,说明这一数据是常量。如果必须要改变这些值,则需要执行 tuple 到 list 的转换 (需要使用一个特殊的函数)。
- Tuples 可以在 dictionary(字典,后面要讲述) 中被用做 key,但是 list 不行。Dictionary key 必须是不可变的。Tuple 本身是不可改变的,但是如果您有一个 list 的 tuple,那就认为是可变的了,用做 dictionary key 就是不安全的。只有字符串、整数或其它对 dictionary 安全的 tuple 才可以用作 dictionary key。
- Tuples 可以用在字符串格式化中。
python_元组的更多相关文章
- Python_元组、字典内建方法详解
目录 目录 前言 软件环境 元组Tuple count 查询一个元素在Tuple中的数量 index 查询元素在Tuple中的索引号 元组的遍历 字典Dictionary 创建一个字典对象 简单的创建 ...
- python_元组 学习
一.创建元组 代码: name=(‘chinese’,’gansu’,’beijing’) 创建空元组 name=() 元组中只包含一个元素时,需要在玄素后面加逗号(,)消除歧义: name=(‘ch ...
- python_元组、字典
1.元组无法修改,只能索引2.只有两种方法 count 和 indexnames = ("Alex","jack")print(names.count(&quo ...
- python_元组(tuple)
#tuple(),元组不可以修改,不能对其进行增加或删除操作,元组是有序的 #1.定义 tu_1 = () #定义一个空元组 tu_2 = (1,2,'alex',[3,4],(5,6,7),True ...
- python_如何为元组中每个元素命名
学生信息系统: (名字,年龄,性别,邮箱地址) 为了减少存储开支,每个学生的信息都以一个元组形式存放 如: ('tom', 18,'male','tom@qq.com' ) ('jom', 18,'m ...
- 零基础学习python_列表和元组(10-13课)
一时兴起今天又回过头来补一下列表和元组,先来说说列表哈,列表其实是python最经常用到的数据类型了,不仅经常用还很强大呢,这个跟C语言里面的数组是类似的,列表当然也可以增删改查,不过我可没打算用之前 ...
- python_列表、元组、字典、集合对比
列表.元组.字典.集合 列表.元组.字典.集合对比 比较项 列表 元组 字典 集合 类型名称 list tuple dict set 定界符 [] () {} {} 是否可变 是 否 是 是 是否有序 ...
- python_列表/元组/元组列表以及如何使用
1.list是处理一组有序项目的数据结构 #定义一个列表 list=[1,2,3] print type(list) print list[0] 输出: <type 'list'> 1 2 ...
- python_字符串,元组,格式化输出
一.字符串 1.字符串是有成对的单引号或者双引号括起来的.例如:name="张三",sex="女" 2.字符串的索引是从0开始的 3.字符串的切片 a.单个字符 ...
随机推荐
- 第10章 同步设备I/O和异步设备I/O(4)_利用I/O完成端口实现Socket通信
I/O完成端口原理见上一篇(可点击这里) 10.5.4.4 利用I/O完成端口实现Socket通信 (1)Accept和AcceptEx流程的比较 ①采用accept方式的流程示意图如下(普通的阻塞函 ...
- java 20 - 7 字节输入流的操作
字节输入流操作步骤: A:创建字节输入流对象 B:调用read()方法读取数据,并把数据显示在控制台 C:释放资源 步骤A.C 略过,说步骤B 读取数据的方式: A:int read():一次读取 ...
- 【转】【PNG压缩工具】PNG 图像的优化及压缩工具介绍
图像格式有许多种不同类型,在互联网上最常见的有JPEG.GIF.BMP.TIFF和PNG.每一种图像格式都有它自己的用途,比如GIF是用于动画的,JPEG是用于高清图片的,这种图片在保存或者调整大小后 ...
- GeoServer 常见问题总结
Geoserver安装环境 Geoserver在部署发布服务时,经常会遇到如下问题,现总结如下: 1.忘记了GeoServer Web Admin Page的登陆用户名和密码怎么办? 存储位置:C:\ ...
- js屏蔽回车键
document.onkeydown = function () { if (window.event && window.event.keyCode == 13 ...
- python数字图像处理(8):对比度与亮度调整
图像亮度与对比度的调整,是放在skimage包的exposure模块里面 1.gamma调整 原理:I=Ig 对原图像的像素,进行幂运算,得到新的像素值.公式中的g就是gamma值. 如果gamma& ...
- 关于java按位操作运算
<1>.在了解位移之前,先了解一下正数和负数的二进制表示形式以及关系:举例15和-15:15 的原码: 00000000 00000000 00000000 00001111 补码 ...
- [MetaHook] Quake FMOD function
QFMOD.h #ifndef QFMOD_H #define QFMOD_H #include "fmod.h" extern FMOD_RESULT (F_API *qFMOD ...
- 【转载】UVa 11464 Even Parity 偶数矩阵
题意:给你一个n*n的01矩阵,让你把这个矩阵中尽量少的0转换成1,使得矩阵每个位置的上下左右四个相邻的数加起来能被2整除,求最少的转换数 首先,n 的规模并不大,最大只有15.但是完全枚举整个矩阵显 ...
- 34 Sources for Test Ideas
We recommend collecting test ideas continuously from a variety of information sources. Consider the ...