定义和初始化

#tuple()          使用工厂函数tuple定义一个空元组

#()               使用圆括号定义一个空元组

#(1,2,3)          使用圆括号定义有初始值的元组

#tuple(可迭代对象)  把可迭代对象转换为一个元组

In [1]: tup=tuple();print(tup)
() In [2]: tup=();print(tup)
() In [3]: tup=(1,2,3);print(tup)
(1, 2, 3) In [5]: tup=tuple(range(0,2));print(tup)
(0, 1) #要定义一个只有1个元素的tuple,如果这么定义:
In [30]: tup=(1)
In [31]: type(tup)
Out[31]: int
#定义的不是tuple,是1这个数!这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1。
#所以只有1个元素的tuple定义时必须加一个逗号,,来消除歧义
In [32]: tup=(1,)
In [33]: type(tup)
Out[33]: tuple
In [34]: print(tup)
(1,)
# Python在显示只有1个元素的tuple时,也会加一个逗号,,以免误解成数学计算意义上的括号

元组是不可修改的

访问元组元素

1. 通过索引访问元素

In [7]: t=tuple(range(0,7));print(t)
(0, 1, 2, 3, 4, 5, 6) In [8]: t[1]
Out[8]: 1 In [9]: t[-1]
Out[9]: 6

2. index()

In [21]: help(t.index)
index(...) method of builtins.tuple instance
T.index(value, [start, [stop]]) -> integer -- return first index of value.
Raises ValueError if the value is not present. In [16]: print(t)
(1, 2, 3, 2, 6) In [17]: t.index(2)
Out[17]: 1 In [20]: t.index(2,1,3)
Out[20]: 1

3. count()

In [21]: help(t.count)
count(...) method of builtins.tuple instance
T.count(value) -> integer -- return number of occurrences of value In [22]: t.count(2)
Out[22]: 2

命名元组 nametuple

# namedtuple('名称', [属性list]):
# namedtuple是一个函数,它用来创建一个自定义的tuple对象,并且规定了tuple元素的个数,并可以用属性而不是索引来引用tuple的某个元素。
# 这样一来,我们用namedtuple可以很方便地定义一种数据类型,它具备tuple的不变性,又可以根据属性来引用,使用十分方便。 # 例如我们可以使用namedtuple来表示坐标:
In [35]: from collections import namedtuple In [36]: Circle=namedtuple('Circle',['x','y','z']) In [37]: C=Circle(2,2,3) In [38]: print(C.x);print(C.z)
2
3 # 创建的Circle对象是tuple的一种子类
In [39]: isinstance(C,Circle)
Out[39]: True In [40]: isinstance(C,tuple)
Out[40]: True # 所以C完全可以当做元组去使用
In [46]: C.index(2)
Out[46]: 0 In [47]: print(C[1])
2 In [48]: C.count(2)
Out[48]: 2
#列表和元组的异同?
#<相同点>
列表和元组都是容器,可以包含任意类型的元素(甚至是包含一个序列)
列表和元素也都包含元素的顺序
#<差别>
列表是可变的,元组是不可变的
所以通常,在你有一些不确定长度的相同类型队列时使用列表
在已知元素数量的情况下用元组

[PY3]——内置数据结构(2)——元组及其常用操作的更多相关文章

  1. [PY3]——内置数据结构(7)——字典及其常用操作

    字典及其常用操作Xmind图 关于字典 字典是一种key-value结构 字典是无序的 字典的定义 # {}大括号可以直接定义一个空字典 In [1]: d={};type(d) Out[1]: di ...

  2. [PY3]——内置数据结构(6)——集合及其常用操作

    集合及其常用操作Xmind图          集合的定义 # set( ) # {0,1,2} //注意不能用空的大括号来定义集合 # set(可迭代对象) In [1]: s=set();type ...

  3. [PY3]——内置数据结构(1)——列表及其常用操作

    列表及其常用操作_xmind图         about列表 列表是一个序列,用于顺序存储数据 列表分为两种:ArrayList(用数组实现).LinkedList(用链表实现) 定义与初始化 #l ...

  4. [PY3]——内置数据结构(3)——字符串及其常用操作

    字符串及其常用操作xmind图 字符串的定义 1. 单引号/双引号 In [1]: s1='hello world' In [2]: s1="hello world" 2. 三对单 ...

  5. [PY3]——内置数据结构(9)——线性结构与切片/命名切片slice()

    线性结构的总结 列表list  元组tuple  字符串str  bytes  bytearray的共同点: 都是顺序存储.顺序访问的: 都是可迭代对象: 都可以通过索引访问 线性结构的特征: 可迭代 ...

  6. [PY3]——内置数据结构(8)——解构与封装

    ### 解构的理解与用法 ### 解构是python很有特色的一个功能,被很多语言借鉴(例如ES6) # 元素按照顺序赋值给变量 In [31]: lst=list(range(5)) In [32] ...

  7. Python内置数据结构之元组tuple

    1. Python序列之元组:不可修改的序列 元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能像列表式的增删改,只能查,切片,所以元组又叫只读列表. 元组用圆括号括起(这是通常采用的做法) ...

  8. [PY3]——内置数据结构(5)——字符串编码

    py2和py3中关于字符串的最大区别? python2中只有 unicode类型 而python3中有 string bytes两种类型 关于string和bytes的区分? 1.str是文本序列.b ...

  9. [PY3]——内置数据结构(4)——字符串格式化(format)

    字符串格式化是拼接字符串的一种手段 join和+拼接字符串的方法,难以控制格式 printf style 字符串格式化 这种方法是从c语言继承过来的 # 待格式化的字符串:一个字符串存在占位符 In ...

随机推荐

  1. WebLogic 两处任意文件上传漏洞动态分析(CVE-2018-2894)

    0x01 前言 CNCERT前几天发公告称发现Oracle公司出品的基于JavaEE结构的中间件WebLogic产品存在一个远程上传漏洞,并得到了厂商的确认,危害程度评分高达9.8分.鉴于厂商已进行了 ...

  2. C# 多线程task

    1.异步和多线程的区别?没什么太大区别.异步是目的,使用多线程实现.想想AJAX异步加载,不就是不想让浏览器界面卡住嘛,所以在程序中对于某些单独的操作,比如写日志,我们不想等它完成后再执行其它操作(因 ...

  3. LightOJ 1213 Fantasy of a Summation(规律 + 快数幂)

    http://lightoj.com/volume_showproblem.php?problem=1213  Fantasy of a Summation Time Limit:2000MS     ...

  4. maven的jar路径、下载路径

    jar路径:在localRepository中填写先要放的位置 下载镜像:添加新的就可以 <mirror> <id>nexus-aliyun</id> <mi ...

  5. Mysql 中日期类型bigint和datetime互转

    MySql数据库中字段类型bigint 长度是10位的 mysql> select (from_unixtime(1554047999))as datatime;+--------------- ...

  6. python网络编程--socketserver 和 ftp功能简单说明

    1. socketserver 我们之前写的tcp协议的socket是不是一次只能和一个客户端通信,如果用socketserver可以实现和多个客户端通信.它是在socket的基础上进行了一层封装,也 ...

  7. Java中的内部类(二)成员内部类

    Java中的成员内部类(实例内部类):相当于类中的一个成员变量,下面通过一个例子来观察成员内部类的特点 public class Outer { //定义一个实例变量和一个静态变量 private i ...

  8. Centos安装Ruby2.2.3

    升级软件包版本 (PS:我没有升级,一是太慢了,二是不知道更新完之后是否会影响其他的应用) #升级所有包,改变软件设置和系统设置,系统版本内核都升级 yum -y update #升级所有包,不改变软 ...

  9. 【javascrpt】——图片预览和上传,兼容IE 9-

    下载DEMO:https://github.com/CaptainLiao/zujian/tree/master/Upload 对于现代浏览器来说,要实现图片预览非常简单: 1.fileReader. ...

  10. [Objective-C语言教程]继承(25)

    面向对象编程中最重要的概念之一是继承.继承允许根据一个类定义另一个类,这样可以更容易地创建和维护一个应用程序. 这也提供了重用代码功能和快速实现时间的机会. 在创建类时,程序员可以指定新类应该继承现有 ...