Python学习之元组

19 篇文章 0 订阅
17 篇文章 1 订阅

这一篇博客的东西比较少,但是挺重要的,主要就是关于对元组的学习。
首先我们来看一个例子:

>>> string = 'this is a string'
>>> print string 
this is a string
>>> 

如果我们把上面的例子用另外一种形式写,如下:

>>> tuplestr='this','is',['a','string']
>>> print tuplestr
('this', 'is', ['a', 'string'])
>>> 

这个示例并没有报错,也没有最后一个有效,而是将对象作为一个新类型tuple(元组)赋值给了变量tuplestr。
元组是用圆括号括起来的,元组之间用逗号隔开。
注意:不管是圆括号还是逗号,都必须是半角符号,即英文符号
元组中的元素可以是Python中的任何对象类型。
其实我们再之前可能碰到过这样的写法。如下:

>>> print "I love %s,I am a %s" %("python","student")
I love python,I am a student
>>> 

像以上示例的圆括号就是一个元组。
其实元组也是一种序列。这点与列表字符串相同。它的特点就是元组中的元素不能够更改,这一点倒是与字符串类似,但是与列表不相同;它的元素又可以是任何的对象类型,这一点又与列表相同,与字符串倒是不同。
文字看起来比较晦涩,我们抛几个代码出来。

>>> s = 'a',123,['string',123,"python"],("java",'c++')
>>> print s
('a', 123, ['string', 123, 'python'], ('java', 'c++'))
>>> s [0] = 'b'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> s.append('VC++')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'append'
>>> 

元组中的索引和切片

>>> s
('a', 123, ['string', 123, 'python'], ('java', 'c++'))
>>> s[0]
'a'
>>> s[5]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: tuple index out of range
>>> s[3]
('java', 'c++')
>>> s[2][1]
123
>>> s[1:]
(123, ['string', 123, 'python'], ('java', 'c++'))
>>> s[1:2]
(123,)
>>> s[-3:-1]
(123, ['string', 123, 'python'])
>>> s[:-1]
('a', 123, ['string', 123, 'python'])
>>> 

但是注意,当元组中只有一个元素时,请在这个元素的后面加一个半角逗号,不然不能识别出是元组
示例:

>>> a = 'a'
>>> type(a)
<type 'str'>
>>> b = 'a',
>>> type(b)
<type 'tuple'>
>>> 

现在注意到这个微小的细节了吧。
列表和元组之间可以相互转化。分别使用List( ) 和 tuple( )
从tuple转换到list

>>> s
('a', 123, ['string', 123, 'python'], ('java', 'c++'))
>>> print s
('a', 123, ['string', 123, 'python'], ('java', 'c++'))
>>> tlist = list(s)
>>> print tlist
['a', 123, ['string', 123, 'python'], ('java', 'c++')]
>>> type(tlist)
<type 'list'>
>>> 

从列表转换到元组。

>>> lis = ['a','b',134,['Python','Java'],'C++','www.baidu.com']
>>> print lis
['a', 'b', 134, ['Python', 'Java'], 'C++', 'www.baidu.com']
>>> ltuple = tuple(lis)
>>> print ltuple
('a', 'b', 134, ['Python', 'Java'], 'C++', 'www.baidu.com')
>>> type(ltuple)
<type 'tuple'>
>>> 

用途
既然元组既有字符串的特性又有列表的特性,那么它到底有什么用途呢??
有些情况只需要用列表或者字符串,但是这个世界是复杂的,你们简单也没有用,但是我们解决的问题不全是简单的,所以,再一下情况下我们使用元组。
一般认为元组具有这些特点,并且也是它使用的情景。

·元组比列表操作速度快。如果定义了一个值的常量集,并且唯一用它做的是不断的遍历,请使用元组代替列表。
·如果对不需要修改的数据进行“写保护” ,可以使代码更安全,这时使用元组而不是列表。如果要必须改变这些值,那么,请用元组到列表之间的转换。
·元组可以再字典(下一篇学习字典)中被作为key,但是列表不行,因为字典的Key是不可变的,而元组就是不可变的。
·元组可以用在字符串格式化中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值