0%

【Python】List列表

Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。

①创建List列表

就我而言更喜欢将其与数组相类比 比如Python的

1
2
L=['Michael', 'Bob', 'Tracy']
print L

(结果为[‘Michael’, ‘Bob’, ‘Tracy’]) 就相当于C#中的

1
2
string[] L=new string[3]{"Michael","Bob","Tracy"};
Console.WriteLine("{/"{0}/",/"{1}/",/"{2}/"",L[0],L[1],L[2]};

(结果为{“Michael”,”Bob”,”Tracy”}) 但是不同之处在于,Python的List列表不限于一种类型,如

1
2
L=['Michael', 12, True]
print L

也可以编译通过 (结果为[‘Michael’, 12, True]) 另外空表也是允许的。

②打印列表数据

调用单个元素时,也可以像数组那样使用索引,并且索引也是从零开始。如上面的例子中L[0]的值为Michael。 你以为这么简单就完了?那肯定不成! 在Python中,也可以使用负数索引表示倒序! 如上例中,L[-1]=Tracy=L[2],L[-2]=Bob=L[1],L[-3]=Micheal=L[0]

③List列表的扩展与缩减

在C语言中,已经声明的数组还可以用relloc扩充,但是C#的数组一旦被实例化就固定不动了,Python可否更改已经声明了的List呢? 当然可以! 第一个办法是用 list 的append()方法,把新数据追加到 list 的末尾

>>> L = [‘Adam’, ‘Lisa’, ‘Bart’]

L.append(‘Paul’)
print L
[‘Adam’, ‘Lisa’, ‘Bart’, ‘Paul’

第二个方法是用list的insert()方法,它接受两个参数,第一个参数是索引号,第二个参数是待添加的新元素:

>>> L = [‘Adam’, ‘Lisa’, ‘Bart’]

L.insert(0, ‘Paul’)
print L
[‘Paul’, ‘Adam’, ‘Lisa’, ‘Bart’]

L.insert(0, ‘Paul’) 的意思是,’Paul’将被添加到索引为 0 的位置上(也就是第一个),而原来索引为 0 的Adam,以及后面的所有数据,都自动向后移动一位。 那么如何删除数据呢? 我们可以用list的pop()方法删除:

>>> L = [‘Adam’, ‘Lisa’, ‘Bart’, ‘Paul’]

L.pop()
‘Paul’
print L
[‘Adam’, ‘Lisa’, ‘Bart’]

pop()方法总是删掉list的最后一个元素,并且它还返回这个元素,所以我们执行 L.pop() 后,会打印出 ‘Paul’。 然而如果对于这种情况

>>> L = [‘Adam’, ‘Lisa’, ‘Paul’, ‘Bart’]

要把Paul踢出list,我们就必须先定位Paul的位置。由于Paul的索引是2,因此,用pop(2)把Paul删掉:

>>> L.pop(2)
‘Paul’

print L
[‘Adam’, ‘Lisa’, ‘Bart’]

④替换元素

比如在以下列表

>>> L = [‘Adam’, ‘Lisa’, ‘Bart’]

中,使用Paul替换掉Bart,可以直接赋值替换

>>> L[2] = ‘Paul’

print L
L = [‘Adam’, ‘Lisa’, ‘Paul’]

当然你也可以这样秀操作:

>>> L[-1] = ‘Paul’

⑤创建tuple列表

那么如果想创建不能被修改的列表该怎么办呢? 很简单之前不是用[]声明的吗?这次用()声明即可,用()声明的列表就是tuple列表 如

>>> t = (‘Adam’, ‘Lisa’, ‘Bart’)

这样,这个列表t就既不能增减,也不能改变。 那么,这里就有了一个问题,即

t = (1)

这到底是个什么东西 是tuple列表,还是1加了括号? 答案是1加了括号

>>> t = (1)

print t
1

那要是想表示tuple列表里只有一个元素该怎么办? 好说,加个逗号即可

>>> t = (1,)

print t
(1,)

⑥“二维列表”嵌套列表

注意看这个东西:

>>> t = (‘a’, ‘b’, [‘A’, ‘B’])

其实,这只是一个列表嵌套了一个列表而已,如果我想改变里面那个列表该怎么办呢? 把它“”出来

>>> t = (‘a’, ‘b’, [‘A’, ‘B’])

L = t[2]
L[0] = ‘X’
L[1] = ‘Y’
print t
(‘a’, ‘b’, [‘X’, ‘Y’])

”出来后只要是List列表,要增加减少还是替换就看我们怎样操作了。 将列表转换为字符串:join()方法 使用方法:分割字符.join(链表),如

L = [‘Adam’, ‘Lisa’, ‘Bart’]
print ‘\\n’.join(L)
Adam
Lisa
Bart

有些同学会问了,后面这几个案例怎么都没有C#对照呢?因为C#的数组它都不能这么玩啊