列表用法补充
列表属于序列中的一种,序列包括(列表,元组,字符串,buffer对象,xrange对象)
列表跟元组唯一的区别就是:列表可以修改,元组不能被修改(元组不可修改的属性决定了元组可以在映射中当作键使用;可以作为很多内建函数和方法的返回值存在)
之前在python基础篇中有总结过列表的基本用法,在这里做一下列表用法的补充:
a=['tina fei',18] b=['tom li',22] c=[a,b] print(c) print(c[0]) 执行结果: [['tina fei', 18], ['tom li', 22]] ['tina fei', 18]
phoneNumbers = ['213123','542113','543231','974723'] names=['Ada', 'Bill', 'Candy', 'David'] a=phoneNumbers[names.index('Bill')] print(a)#542113
切片用法的案例补充:
#切片的用法补充 data=[1,2,3,4,5,6,7,8,9,10] print(data[-3:-1]) print(data[-3:]) print(data[::2])##从第三个开始是对步长的练习print(data[1::2]) print(data[::-1]) print(data[-1:-8:-1]) print(data[8:1:-1]) 执行结果如下: [8, 9] [8, 9, 10] [1, 3, 5, 7, 9] [2, 4, 6, 8, 10] [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] [10, 9, 8, 7, 6, 5, 4] [9, 8, 7, 6, 5, 4, 3]
分片赋值的用法:
data=[1,2,3,4,5,6,7,8,9,10] data[0]=100#索引赋值 del(data[2])#删除元素 data[1:4]=list('tina')#分片赋值 print(data,len(data))#[100, 't', 'i', 'n', 'a', 6, 7, 8, 9, 10] 10 data[-2:]=list('hahaha')#分片赋值时,原片与新片长度不同 print(data,len(data))#[100, 't', 'i', 'n', 'a', 6, 7, 8, 'h', 'a', 'h', 'a', 'h', 'a'] 14 data[0:0]=list('test')#分片赋值可以在指定位置插入新的元素 print(data,len(data))#['t', 'e', 's', 't', 100, 't', 'i', 'n', 'a', 6, 7, 8, 'h', 'a', 'h', 'a', 'h', 'a'] 18 深浅拷贝中涉及到的列表分片: x=list('12345') y=x x.reverse() print(y)#['5', '4', '3', '2', '1']这里的y也跟着改变了 #但是用分片的方法复制,x与Y是相互独立的,修改x,不会影响Y y=x[:] y.sort() print(x,y)#['5', '4', '3', '2', '1'] ['1', '2', '3', '4', '5']
序列与运算符相结合的用法:
1、加法: first=[1,2,3] second=[2,3,4] print(first+second)#[1, 2, 3, 2, 3, 4] 2、乘法: first=[1,2,3] print(first*3) print([None]*2) 执行结果: [1, 2, 3, 1, 2, 3, 1, 2, 3] [None, None]
just for fun:打印盒子的案例(练习序列与运算符的用法)
mystr=input('input any string follow your heart:') strlen=len(mystr) linestart=20 print(' '*linestart+'+'+'-'*strlen+'+') print(' '*linestart+'|'+' '*strlen+'|') print(' '*linestart+'|'+mystr+'|') print(' '*linestart+'|'+' '*strlen+'|') print(' '*linestart+'+'+'-'*strlen+'+') 执行结果如下: input any string follow your heart:I am falling in love with tina! +-------------------------------+ | | |I am falling in love with tina!| | | +-------------------------------+
列表推导式
matix=[[0 for i in range(4)] for i in range(4)] # 用列表推导式初始化生成一个4*4的列表,列表元素全为 0 执行结果如下: [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]