Python列表的主要属性:

1)任意对象的有序集合

2)通过偏移读取

3)可变长度、异构和任意嵌套

4)属于可变序列的分类

5)对象引用数组

一、创建列表list0之后

1、在在列表末尾增加一个数据项,使用append()方法

list0.append("data")

2、从列表末尾删除一个数据项,使用pop()方法

list0.pop()

3、从列表末尾增加一个数据项集合,使用extend()方法

list0.extend(["data0","data1","data2", ...])

4、从列表中找到并删除一个数据项,使用remove()方法

list0.remove("data")

5、在列表中某一特定位置前添加一个数据项,使用insert()方法

list0.insert(n,"data")  #n表示列表中某一特定位置

6、是列表中的数据项升序排列,使用sort()方法

list0.sort()   #sort()方法还有两个可选参数:key和reverse(布尔值)

7、将列表中的所有数据翻转,使用reverse()方法

list0.reverse()

8、查找列表中某元素的偏移量,使用index()方法

list0.index()

9、列表的高级排序方法,使用cmp()方法

cmp(x,y)

当x>y时 返回值:1

当x=y时 返回值:0

当x<y时 返回值:-1

 

二、迭代的方法打印列表的数据

1 list1 = ['data0','data1','data2','data3', ... ,'dataN']
2 
3 for each_data in list1:
4 
5     print each_data

python中的for循环就是为了处理列表和python中的其他迭代结构

列表时python中最常用的迭代数据结构,需要迭代处理一个列表时,最好使用for循环

也可以使用while循环

1 count = 0    #使用while循环需要考虑一个状态信息,要加入一个count计数器
2 while count < len(list1):
3     print list1[count]
4     count = count + 1
5 #以上代码效果等同于上面的for循环

 列表中可以嵌套列表,使用for循环时,只会打印出最外层的列表,而嵌套的列表则只会原样打印出来

三、在列表中查找列表

每次处理列表时,要查看处理的数据项是不是列表,如果是列表则要在处理下一个数据项之前先处理这个嵌套的列表

在Python中使用if...else...的模式。

Python中内置了一个isinstance(name,type)的方法  #name是变量的名称,type是变量的类型,其返回值为True或者False

1 ls0 = ['aa',['aaa',['aaaa','aaab','aaac'],'aab','aac'],'bb','cc']
 2 
 3 for lsa in ls0:
 4     if isinstance(lsa,list):
 5         for lsb in lsa:
 6             if isinstance(lsb,list):
 7                 for lsc in lsb:
 8                     print lsc
 9         else:
10             print lsb
11     else:
12         print lsa

运行程序,打印出的结果

aa
aaa
aaaa
aaab
aaac
aab
aac
bb
cc

多层的嵌套循环可以打印出列表中的列表中的列表中的数据,但是方法过于麻烦繁琐,令人头疼

发现上面的多层嵌套代码重复性语句过多,可以使用函数来减少代码的重复

1 ls0 = ['aa',['aaa',['aaaa','aaab','aaac'],'aab','aac'],'bb','cc']
 2 
 3 def DisplayLst(input_lst):
 4     for lsa in input_lst:
 5            #如果数据项是列表类型,则调用Displayst函数,否则打印此数据项
 6         if isinstance(lsa,list):    
 7             DisplayLst(lsa)
 8         else:
 9             print lsa
10 
11 DisplayLst(ls0)

解决之道:递归

使用函数和递归把复杂的多层嵌套简单化(Python3中允许的嵌套层数不超过100)

 

四、列表的解析

list2 = [[1,2,3],[4,5,6],[7,8,9]]
list21 = [row[1] for row in list2]
>>list21
[2,5,8]
>>[row[1]+1 for row in list2]
[3,6,9]
>>[row[1] for row in list2 if row[1] % 2 == 0]
[2,8]
>>[list2[i][i] for i in [0,1,2]]
[1,5,9]
>>[c * 2 for c in 'spam']
['ss','pp','aa','mm']

>>G = (sum(row) for row in list2)
>>next(G)
6
>>next(G)
15

>>list(map(sum,list2))
[6,15,24]