元組 Tuple 宣告

元組是用逗號分隔的一列值:

>>> t = 'a',1,'b',2,'c',3
>>> t
('a', 1, 'b', 2, 'c', 3)
>>> t = ('a',1,'b',2,'c',3)
>>> t
('a', 1, 'b', 2, 'c', 3)

 1. 元組是不可變的

>>> t[0] = 'y'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

但可將一個元組替換另一個元組,例如:

>>> t = 'a',1,'b',2,'c',3
>>> t
('a', 1, 'b', 2, 'c', 3)
>>> t = ('x',) + t[1:]
>>> t
('x', 1, 'b', 2, 'c', 3)
>>>

2. 元組賦值

>>> X = 2
>>> Y = 3
>>> X,Y = Y,X
>>> X
3
>>> Y
2

這樣的寫法很簡潔漂亮,而不是一般採用下列的寫法:

Z = X

X = Y

Y = Z

另一個例子是將一個字串拆解,分別賦值:

>>> email_address = 'john@company.com'
>>> name,company = email_address.split('@')
>>> name
'john'
>>> company
'company.com'

 3. 元組做為返回値

>>> t = divmod(10,3)
>>> t
(3, 1)
>>> quot,rem = divmod(10,3)
>>> quot
3
>>> rem
1

 4. 可變長度參數元組

>>> def print_all(*args):
...     print(args)
...
>>> print_all(1,2,3)
(1, 2, 3)
>>> print_all(1,2,3,4,5)
(1, 2, 3, 4, 5)

>>> t = (10, 3)
>>> divmod(*t)
(3, 1)

 5. 列表與元組

>>> x = 'abc'
>>> y = '123'
>>> zip(x,y)
<zip object at 0x00000000021B10C8>

>>> id(x)
30795008
>>> id(y)
35332200

>>> for c in zip(x,y):
...     print(c)
...
('a', '1')
('b', '2')
('c', '3')

>>> list(zip(x,y))
[('a', '1'), ('b', '2'), ('c', '3')]

>>> t = [('a',1),('b',2),('c',3)]

>>> for letter,number in t:
...     print(letter,number)
...
a 1
b 2
c 3

 6. 字典與元組

元組為一個列表,轉化為字典:

>>> t = [('a',1),('b',2),('c',3)]
>>> d = dict(t)
>>> d
{'a': 1, 'b': 2, 'c': 3}

將字典以 items 方法,轉化為元組:

>>> m = d.items()
>>> m
dict_items([('a', 1), ('b', 2), ('c', 3)])

以 zip 方法,快速創建字典:

>>> n = dict(zip('abc',range(3)))
>>> n
{'a': 0, 'b': 1, 'c': 2}

/end

Python 元組 Tuple的更多相关文章

  1. python元祖(tuple)

    # 列表:有序,元素可以被修改 # 列表 # list # li = [111,22,33,44] # 元组:元素不可被修改,不能被增加或者删除 # ps: # tuple # tu = (11,22 ...

  2. Python 基礎 - 元組與簡易購物車實做

    tuple(元組) 其實跟列表差不多,也是存一組數,只不過是它一旦建立了,就不能修改了,只能做 切片 跟 查詢,所以只叫 只讀列表 語法: name = ("Rogers", &q ...

  3. Python中的元祖Tuple

    Python中的元祖和list基本上一样 tuple = () # 表示一个空的元祖 tuple = (50, ) # 元组中只有一个元素的时候,必须在后面加上逗号 无关闭分隔符 任意无符号的对象,以 ...

  4. 『Python基础-9』元祖 (tuple)

    『Python基础-9』元祖 (tuple) 目录: 元祖的基本概念 创建元祖 将列表转化为元组 查询元组 更新元组 删除元组 1. 元祖的基本概念 元祖可以理解为,不可变的列表 元祖使用小括号括起所 ...

  5. python基本数据类型之元祖tuple

    元祖tuple 是对列表的二次加工,书写格式为括号(),里面放元素 元组的一级元素不可被修改,且不能被增加和删除 一般写元组的时候,推荐在最后加入逗号,  能加则加 创建元组 ? 1 tu = (11 ...

  6. python元类:type和metaclass

    python元类:type和metaclass python中一切皆对象,所以类本身也是对象.类有创建对象的能力,那谁来创建类的呢?答案是type. 1.用tpye函数创建一个类 class A(ob ...

  7. Python 元类 - Metaclasses

    Python 元类 - Metaclasses 默认情况下儿, classes 是有 type() 构造的. 类的结构体在一个新的 namespace 被执行, 类的名字 class name 绑定( ...

  8. Python之创建tuple和“可变”的tuple

    Python之创建tuple tuple是另一种有序的列表,中文翻译为" 元组 ".tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了. 同样是表示班里 ...

  9. Python元编程

    简单定义"元编程是一种编写计算机程序的技术,这些程序可以将自己看做数据,因此你可以在运行时对它进行内审.生成和/或修改",本博参考<<Python高级编程>> ...

随机推荐

  1. wx-all

    学习这部分时也学了不少代码,一段一段往这上面写实在有点~~~ 直接把代码部署到代码该在的地方吧,哈哈哈 这是网址 把代码放这上面就好多了,不怕代码丢,还可保证代码完整,嘻嘻嘻~~~~~~

  2. 安卓AlertDialog四种对话框的最科学编写用法

    首先我们上图: xml的代码如下,用于编写按钮: <?xml version="1.0" encoding="utf-8"?> <Linear ...

  3. Android高斯模糊实现方案

    1.使用Glide Glide.with(this) .load(service.getImageUri()) .dontAnimate() .error(R.drawable.error_img) ...

  4. opencv图像倾斜校正和切边

    #include<opencv2/opencv.hpp> #include<iostream> #include<cmath> using namespace st ...

  5. mysql不等于判断时,空值过滤问题

    产生根源 比如我们有三条数据,对应的列名是delete_flag,对应的数据是'normal','delete',null. 此时我们查所有不等于delete的记录,我们期望的是两条记录 normal ...

  6. JS---DOM---为元素绑定事件的引入,为元素绑定多个代码,兼容代码

    1. 为元素绑定事件的引入: 用src直接绑定多个,只实现最后一个(programmer2.js) <input type="button" value="按钮&q ...

  7. 利用Azure虚拟机安装Dynamics 365 Customer Engagement之十三:从可用性组中移除副本然后重新添加

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  8. 入职小白随笔之Android四大组件——内容提供器详解(Content Provider)

    Content Provider 内容提供器简介 内容提供器(Content Provider)主要用于在不同的应用程序之间 实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的 ...

  9. synchronized凭什么锁得住?

    相关链接: <synchronized锁住的是谁?> 我们知道synchronized是重量级锁,我们知道synchronized锁住的是一个对象上的Monitor对象,我们也知道sync ...

  10. VS2017无法打开Razor视图文件提示:引发类型"System.Exception"异常

    背景介绍 由于电脑装了R#(吃内存大户),导致VS2017打开项目慢以及卡顿,因此在扩展和更新这个功能里面将没用的插件关闭了,导致.NET CORE的Razor视图文件打不开(真心是一脸懵逼,关个插件 ...