python元组学习

来源:互联网 发布:网络十大神神兽 编辑:程序博客网 时间:2024/04/28 19:23
元组


>>> 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
这里的圆括号,就是一个元组。


>>> t = 1,"23",[123,"abc"],("python","learn")  #元素多样性,近list
>>> t
(1,"23",[123,"abc"],("python","learn"))


>>> t[0] = 0   #不能原地修改,近str
TypeError:


>>> t.append("no")
AttributeError:




索引和切边


>>> t
(1,"23",[123,"abc"],("python","learn"))
>>> t[2]
[123, 'abc']
>>> t[1:]
("23",[123,"abc"],("python","learn"))


>>> t[2][0]  #
123
>>> t[3][1]
'learn'




特别提醒:如果一个元组中只有一个元素的时候,应该在该元素后面加一个半角的英文逗号
>>> a = (3)
>>> type(a)
<type 'int'>


>>> b = (3,)
>>> type(b)
<type 'ruple'>
如果不加那个逗号,就不是元组。这也是为了避免让python误解你表达的内容。






分别用list()和tuple()能够实现两者的转化:
>>> t
(1,"23",[123,"abc"],("python","learn"))
>>> tls = list(t)
>>> tls
[1,"23",[123,"abc"],("python","learn")]


>>> t_tuple = tuple(tls)
>>> t_tuple
(1,"23",[123,"abc"],("python","learn"))




tuple用在哪里?


它的使用情景:
1)Tuple比list操作速度快。如果您定义了一个值的常量集,并且唯一要用它做的是不断地遍历它,请使用tuple替代list。


2)如果对不需要修改的数据进行“写保护”,可以使用代码更安全。使用tuple而不是list如同拥有一个隐含的assert语句,说明这一数据是常量。如果必须要改变这些值,则需要执行tuple到list的转换(需要使用一个特殊的函数)。


3)Tuple可以在dictionary(字典)中被用做Key。但是list不行。Dictionary key必须是不可变的。Tuple本身是不可变的,但是如果您有一个list的tuple,那就认为是可变的了,用作dictionary key就是不安全的。


4)Tuples可以用在字符串格式化中。
0 0
原创粉丝点击