python编程基础——基本数据类型之元组


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',))

由于博主能力有限,目前还不知道为什么可以这样,因此写下来以便日后解答。

发布了19 篇原创文章 · 获赞 19 · 访问量 3620

猜你喜欢

转载自blog.csdn.net/qq_36733722/article/details/100867673