一、 问题描述
在最近python的学习中看到一个比较有意思的东西,python的一种复合数据类型叫做列表,a=[]和a=list()都表示列表,但是这两种有什么不同呢?
二、 问题分析
Python的数据类型有很多,但我们常用的数据类型有数值类型、字符串类型、布尔类型和复合数据类型。我们比较常用的是复合数据类型,在复合数据类型中有列表、元组、字典和集合这几个数据类型,而列表又是在python使用较多的数据类型,它的两种写法都表示列表,而且表示的效果都是一样的,这个时候问题就是这两种写法有什么区别呢?
三、 问题解决
首先我们看一下这两个这两种写法都表示python的一种复合数据类型——列表,列表是python中使用较多的复合数据类型,可以完成大多数复合数据结构的操作。列表是写在中括号之间、用逗号分隔的元素序列,元素的类型可以不相同,可以是数字、单个字符、字符串甚至可以包含列表(所谓嵌套)。我们下面来尝试一下这两种方式:

>>> a=[1,2,3]
>>> print(a)
[1, 2, 3]
>>> a=list("1,2,3")
>>> print(a)
['1', ',', '2', ',', '3']
>>> a=list("123")
>>> print(a)
['1', '2', '3']

相信大家已经从上边的代码中看出了这两种方式的区别。这两种方式都是创建的一个列表,这两种创建方式其实都是相等的,第一种方式其实是调用第二种方式创建的一个列表,第二种方式是调用函数的方式创建列表,第二种会自动加载构造函数__int__,内部执行for循环,把元组转换为列表,相当于创建一个列表。但两种方式中的数据类型是不同的,也就是说中括号和小括号当中的数据类型是不相同的,所以两个括号内的代码也是不同的,第一种是符合数据类型,第二种则是以字符串的数据类型。如果要表示相同的列表,第一个当中的元素必须用逗号隔开,则第二种不需要用逗号隔开,这就是a=[]和a=list()的区别。它们其他的操作方法都是一样的。
在Python中的字符串、列表和元组数据均属于序列类型,它们的每个元素是按照位置编号来顺序存储的。其他元素一旦确定就不能改变元素中的内容,但列表可以改变,所以列表也是可变的序列。
四、 总结
我们在列表的创建时选择自己喜欢的方式,但要注意其中的数据类型,及其代码的可读性!