定义和初始化

#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. TSQL--TOP选项

    TOP选项需要依据ORDER来选取记录,可以依据行数和百分比来选取记录 按照行数来选取10行记录 SELECT TOP(10) * FROM T1 ORDER BY ID 按照行数来选取10%的记录 ...

  2. 使用testNGListenter来自定义日志

    背景 用testNG写用例的时候,只是打印了请求的日志,没有打印这个用例的开始和结束的标识,想加上这个标识这样更好的排查问题 这种日志是加在用例开始执行和结束,相当于spring中的AOP功能,今天翻 ...

  3. c# HighCharts使用

    最近接到个图形报表的需求,网络上找了几个插件,最后决定用highcharts 需要的文件 1.bll文件,添加到项目引用   http://files.cnblogs.com/files/loveju ...

  4. MVC中用jQuery加BootStrap实现动态增加删除文本输入框!

    http://www.freejs.net/article_biaodan_278.html 这是在网上找到方法,我修改了一下实合我的项目,发博只为收藏记录并加深记忆. 修改后效果如下 @model ...

  5. HDP Spark2 HIVE3.1 的问题

    HDP 上安装了 Hive3.1 和 Spark2, 提交 Spark 作业时,报找不到 Hive 中表的问题 但是查一了下 hive 表,明明是存在这个表的.查看日志,注意到如下的一段日志. 没修改 ...

  6. 牛客OI赛制测试赛1 题解

    A 斐波那契 数竞生:这不是送分的常识吗? 这里引入一个叫卡西尼恒等式的玩意. 公式表达就是 设$fib[i]$为斐波那契数列的第$i$项$(i>0,i \in N_+)$ 则有 $fib[i+ ...

  7. 实时监测input输入变化 jQuery

    $('#production_name').on('input propertychange',function(){ alert('输入一个字弹一回'); });

  8. angular核心原理解析2:注入器的创建和使用

    上一课没有讲到创建注入器的方法createInjector. 此方法,会创建两种不同的注入器:第一种叫做providerInjector,第二种叫做instanceInjector.providerI ...

  9. RN 47 中的 JS 线程及 RunLoop

    RCBridge 初始化时声明了一个 CADisplayLink _jsDisplayLink = [CADisplayLink displayLinkWithTarget:self selector ...

  10. 把 Reative Native 47 版本集成到已有的 Native iOS 工程中

    一.搭建开发环境 http://reactnative.cn/docs/0.46/getting-started.html#content 二.创建一个模板 运行以下命令,创建一个最新版本的 reac ...