Python使用不可变列表的奇怪行为

时间:2015-08-21 17:30:38

标签: python tuples

为什么python会像这样处理字符串列表?..

$ python
Python 2.6.6 (r266:84292, May 27 2013, 05:35:12)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> x = ('sim')
>>> x[0]
's'

虽然可变列表可以做到这一点......

$ python
Python 2.6.6 (r266:84292, May 27 2013, 05:35:12)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> x = ['sim']
>>> x[0]
'sim'

2 个答案:

答案 0 :(得分:4)

你在那里没有不可变的list。你认为你拥有的是tuple,但它不是。括号仅用于分组。你真的只有一个普通的字符串。如果您想指明tuple,请使用逗号:

>>> x = ('sim')
>>> x
'sim'
>>> type(x)
<class 'str'>
>>> x = ('sim',)
>>> x[0]
'sim'
>>> type(x)
<class 'tuple'>

答案 1 :(得分:0)

对于其他答案的快速版本(正确):

您必须使用逗号&#39;,&#39;在括号中使它成为一个元组。

如果没有逗号,你只需要一个字符串,实际上该字符串的第一个索引是&#39; s&#39;。