python之list列表

>>>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的嵌套也挺有意思吧。





发布了41 篇原创文章 · 获赞 4 · 访问量 7万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章