元组和列表区别

元组各元素用逗号分隔

>>> y=123,456,789
>>> y[1]
456

可用圆括号把个元素括起来,也可以不用

>>> y=(123,456,789)
>>> y
(123, 456, 789)
>>> y[1]
456

元组元素不能改变

>>> y=(123,456,789)
>>> y
(123, 456, 789)
>>> y[1]
456

元组可以在初始化阶段进行嵌套

数组用方括号括起来,各元素逗号分隔

>>> l=[123,456,789]
>>> l[1]
456

各元素可以改变

>>> l[1]=852
>>> l[1]
852

可以嵌套进元组

>>> l[1]=y
>>> print(l)
[123, (123, 456, 789), 789]

可以嵌套进列表

>>> l2=[753,951,852]
>>> l[1]=l2
>>> print(l)
[123, [753, 951, 852], 789]

甚至可以自己无限嵌套

>>> l[1]=l
>>> print(l)
[123, [...], 789]

可以对列表或者元组中的某个元素检索,或者检索多个

>>> l[1][1]
951
>>> l[1][0:2]
[753, 951]

但不能对其中某个元素单独检索

>>> l[1][1][1]
Traceback (most recent call last):
  File "<pyshell#35>", line 1, in <module>
    l[1][1][1]
TypeError: 'int' object is not subscriptable
>>> l[0][1]
Traceback (most recent call last):
  File "<pyshell#36>", line 1, in <module>
    l[0][1]
TypeError: 'int' object is not subscriptable

估计是因为元素是int型
验证:

>>> type(l[0])
<class 'int'>

尝试更换列表元素为str型
之后重复上述操作

>>> l[0]=str(123)
>>> type(l[0])
<class 'str'>
>>> l[0][0]
'1'

成功

在元组初始化阶段嵌套进一个列表,那么列表性质会被改变吗?
尝试一下:

>>> l
['123', [753, 951, 852], 789]
>>> y2=(123,456,l)
>>> y2
(123, 456, ['123', [753, 951, 852], 789])
>>> y2[2][2]=987
>>> y2
(123, 456, ['123', [753, 951, 852], 987])

答案是不会,元组里的列表正常运作…
如果需要某些数值不会改变,某些数值需要改变
元组和列表的互相嵌套可以解决问题

你可能感兴趣的:(python)