>>>print(“今天就简单的写写python中的列表,打发一下时间”)
1.简介
python中的列表就类似于数组,但是和数组有些不同。在python中创建一个列表时,会在内存中创建一个类似数组的数据结构来存储数据。python的list可以和数组一样有下标的操作,并且下标从0开始。列表中存储的数据类型可以是混合的不同数据类型。
2.list内置操作函数
list可以有一下几个内置函数(BIT,built- in functions)来操作list##如果想要查看python的内置函数列表可以在IDLE shell中输入dir(__builtins__),builtins的前后分别是两个下划线字符。
append():在列表的后面添加列表数据项。
extend():在列表的末尾添加一个数据项集合。
pop():从列表末尾删除数据项。
remove():在列表中找到一个指定的数据项并删除。
insert():在某个特定的位置之前插入一个数据项。
3.还是拿更直观的实例说话吧。
下面代码中的numbers list之间是带有下划线字符的,不知道为啥在代码中看不到。
>>> numbers_list=['zero','one',2,'three','four']#创建一个list
>>> print(numbers_list)#打印
['zero', 'one', 2, 'three', 'four']
>>> print(len(numbers_list))#len()为BIT获得长度
5
>>> print(numbers_list[2])
2
>>> print(numbers_list[5])#越界错误
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
print(numbers_list[5])
IndexError: list index out of range
>>> numbers_list.append('five')#append()末尾添加数据项
>>> print(numbers_list)
['zero', 'one', 2, 'three', 'four', 'five']
>>> numbers_list.pop()#pop()
'five'
>>> print(numbers_list)
['zero', 'one', 2, 'three', 'four']
>>> numbers_list.extend(['five',6])#添加列表数据项集合
>>> print(numbers_list)
['zero', 'one', 2, 'three', 'four', 'five', 6]
>>> numbers_list.remove('three')#删除查找到的数据项
>>> print(numbers_list)
['zero', 'one', 2, 'four', 'five', 6]
>>> numbers_list.insert(3,'three')#指定位置前插入数据项
>>> print(numbers_list)
['zero', 'one', 2, 'three', 'four', 'five', 6]
4.遍历list数据项
遍历list的所有数据项可以使用for和while。除非有充分的理由使用while循环,遍历一个列表时,总要使用for循环较好。
for循环的结构为:
for 自定义标识符 in 列表:
列表处理代码
while循环结构为:
while 条件conditions:
列表处理代码块
针对上面定义的numbers_list遍历的代码如下:
for循环如下:
item list 和numbers list 之间都分别有下划线字符。
for item_list in numbers_list:
print(item_list)
while循环如下:
count=0
while count<len(numbers_list):
print(numbers_list[count])
count=count+1
对比上面两个迭代遍历,使用for,不会遇到计数器的错误。
5.遍历嵌套的list数据项
在list中是可以嵌套list的,例如下面创建的list,以及下标对应的元素,如下代码所示,(同样在 each item 和nested list分别之间有下划线字符,竟然在代码区看不到):
>>> nested_list=['A','B',['a','b',[1,2]]]
>>> print(nested_list[0])
A
>>> print(nested_list[2])
['a', 'b', [1, 2]]
>>> print(nested_list[2][1])
b
>>> print(nested_list[2][2])
[1, 2]
>>> print(nested_list[2][2][0])
1
>>>
对于这种嵌套的list,如果使用第四部分的for循环进行遍历的话,得到的结果如下所示:>>> for each_item in nested_list:
print(each_item)
A
B
['a', 'b', [1, 2]]
>>>
这种遍历方式是不能遍历所有嵌套列表中的每个数据项的。还好python中提供了isinstance()的BIT,来判断数据项元素是不是某个指定类型的数据对象。利用isinstance()方法可以写到如下的代码:
>>> for each_item in nested_list:
if isinstance(each_item,list):#if 判断是否属于list
for nested_item in each_item:
print(nested_item)
else:
print(each_item)
A
B
a
b
[1, 2]
>>>
由于上面的代码只进行了一次if isinstance判断,只能处理一层嵌套。如果采用上面的方式来遍历所有嵌套列表的数据项,是提前需要知道嵌套的层次的,这样会重复出现if else的代码段,回使代码变得复杂。到这里,由于会重复出现一些代码,可以定义个函数来进行代码的复用,通过递归调用定义的函数就可以遍历每一个数据项。定义函数的格式为:
def 函数名(参数列表):
函数代码块
此处定义的函数为:>>> def print_item(the_list):
for each_item in the_list:
if isinstance(each_item,list):
print_item(each_item)#递归调用
else:
print(each_item)
调用该函数得到结果为:>>> print_item(nested_list)
A
B
a
b
1
2
>>>
哈哈,可以了,遍历了所有的数据项元素。6.总结
简单的list介绍就到这里了,这里有append()、extend()、remove()、pop()、insert()、len()、isinstance()、for 、while 、if ……else 和def 函数等。
哈哈,list就想”满血“的数组,用带有中括号[ ] 包围的数据项集合,数据项集合之间用逗号隔开来创建。
list真是个”打了激素“的数组,比数组强悍,封装定义的高层的数组。
list的嵌套也挺有意思吧。