Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。
①创建List列表
就我而言更喜欢将其与数组相类比 比如Python的
1 | L=['Michael', 'Bob', 'Tracy'] |
(结果为[‘Michael’, ‘Bob’, ‘Tracy’]) 就相当于C#中的
1 | string[] L=new string[3]{"Michael","Bob","Tracy"}; |
(结果为{“Michael”,”Bob”,”Tracy”}) 但是不同之处在于,Python的List列表不限于一种类型,如
1 | L=['Michael', 12, True] |
也可以编译通过 (结果为[‘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#的数组它都不能这么玩啊