文章目录
Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。
定义
#方法一
>>> a='q',123,"qw"
>>> a
('q', 123, 'qw')
#方法二
>>> a=('q',123,"qw")
>>> a
('q', 123, 'qw')
元组也是一种序列,这一点与列表,字符串类似。特点就是其中的元素不能改。而且单个元素的元组后面要加“,”才可以,否则会当成运算符使用。
>>> a=(9)
>>> a
9
>>> type(a)
<class 'int'>
>>> a=(9,)
>>> a
(9,)
>>> type(a)
<class 'tuple'>
>>> a[0]
9
>>> a[0]=1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>>
因此识别元组最重要的标志是,
。
a = 1,
#output
(1,)
在索引上元组有着列表和字符串一样的操作:
>>> a=(1,'asd',['a',1],('c',))
>>> a[1]
'asd'
>>> a[1:]
('asd', ['a', 1], ('c',))
>>> a[2][1]
1
元组和列表间的转换
列表和元组之间可以实现转化,分别使用list()和tuple()实现。
>>> a
(1, 'asd', ['a', 2, 3, 6, 1], ('c',))
>>> b=list(a)
>>> b
[1, 'asd', ['a', 2, 3, 6, 1], ('c',)]
>>> tuple(b)
(1, 'asd', ['a', 2, 3, 6, 1], ('c',))
元组真的不可以改变吗?
在写博客中遇到过下班这些问题,正如大众所知的,元组并不能改变,比如:
>>> a=(1,'asd',['a',1],('c',))
>>> a[1]=3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
但是如果我们改变元组中的a[2]元素会怎么样呢?
>>> a[2]=[2]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
发现也还是改变不了,但是如果改变a[2,1]呢?
>>> a[2][1]=3
>>> a
(1, 'asd', ['a', 3], ('c',))
是不是觉得很不可思议,元组居然改变了,类似的情况还有下面这些…
>>> a=(1,'asd',['a',1],('c',))
#虽然显示'tuple'对象不支持项目分配,但还是改变了
>>> a[2]+=[3]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> a
(1, 'asd', ['a', 1, 3], ('c',))
# 通过extend修改元组
>>> a[2].extend([3])
>>> a
(1, 'asd', ['a', 3, 3], ('c',))
#通过append修改元组
>>> a[2].append(3)
>>> a
(1, 'asd', ['a', 1, 3, 3, 3], ('c',))
由于博主能力有限,目前还不知道为什么可以这样,因此写下来以便日后解答。