Python—序列类型之列表

列表

列表是包含0个或多个对象引用的有序序列

列表是可变的,可以对列表中的项进行删除或替换,插入、替换或删除列表中的分片也是可能的

函数

list()    #可以将元组转换为列表,不带参数时将返回一个空列表
del x     #对象引用被删除后,如果该对象引用所引用的数据项没有被其他对象引用进行引用,那么该数据项将进入垃圾收集流程。不能确定垃圾收集是否自动进行,第一种使用try...finally语句块确保垃圾收集得以进行;另一种是使用with语句
>>>woods = ["Cedar", "Yew", "Pine", "Fir", "Spruce"];
>>>woods[2:4] = [] == del woods[2:4];

range(x)  #将返回一个指代子,x是一个整数,如x为整数参数n,则指代子range()会生成并返回0, 1, ..., n -1
>>>for i in range(len(numbers)):
        numbers[i] += 1;        #对一列整数中的每一个进行递增操作

 空列表可以使用list()函数创建,也可以使用空的方括号来创建

与元组一样,列表可以存放任意数据类型的数据项,包括组合数据类型,比如列表与元组

列表可以使用标准的比较操作符(<、<=、==、!=、>=、>)

列表可以进行分片操作来存取列表中的数据项

>>>L = [-17.5, "kilo", 49, "V", ["ram", 5, "echo"], 7];
>>>L[1][0] == L[-5][0] == 'k';
>>>L[4][2] == L[4][-1] == L[-2][2] == L[-2][-1] == 'echo';
>>>L[4][2][1] == L[4][2][-3] == L[-2][-1][1] == L[-2][-1][-3] == 'c';

和元组一样,列表也支持嵌套、指代、分片等操作,使用in与not in进行成员关系测试,使用+进行连接,使用+=进行扩展,使用*与*=进行复制操作

列表可以使用内置的len()函数以及del语句

方法

L.append(x)  #将数据项x追加到列表L的尾部
L.count(x)   #返回数据项x在列表L中出现的次数
L.extend(m)  #将iterable m的项追加到L的结尾处,操作符+=完成同样的功能
L.index(x, start, end)  #返回数据项x在列表L中(或L的start:end分片中)最左边出现的索引位置,否则会产生一个ValueError异常
L.pop(i)  #返回并移除L中索引位置int i处的数据项,空参数时移除list L最右边的数据项
L.remove(x)  #从list L中移除最左边出现的数据项x,如果找不到x就产生ValueError异常
L.reverse()  #对列表L进行反转
L.sort()  #对列表L进行排序,与内置的sorted()函数一样
L.insert(i, x)  #在索引位置int i处将数据项x插入列表L
>>>woods = ["Cedar", "Yew", "Fir", "Spruce"];
>>>woods[2:2] == woods.insert(2, "Pine");
['Cedar', 'Yew', 'Pine', 'Fir', 'Spruce']

任意可指代的(列表、元组等)数据类型都可以使用序列拆分操作符进行拆分,即*

>>>first, *rest = [9, 2, -4, 8, 7];
>>>first, rest;
(9, [2, -4 , 8, 7])

>>>first, *mid, last = "Charles Philip Arthur George Windsor".split()
>>>first, mid, last;
('Charles', ['Philip', 'Arthur', 'George'], 'Windsor')

>>>*directories, ezecutable = "/usr/local/bin/gvim".split("/")
>>>directories, executable;
(['', 'usr', 'local', 'bin'], 'gvim')

>>>def product(a, b, c):
			 return a * b * c;
>>>L = [2, 3, 5];
>>>product(*L)
30
>>>product(2, *L[1:]);
30

列表内涵

附加条件

>>>leaps = [];
>>>for year in range(1900, 1940):
				if(year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
					leaps.append(year);
					
>>>leaps = [y for y in range(1900, 1940) if(y % 4 == 0 and y % 100 != 0) or (y % 400 == 0)];

实现嵌套

>>>codes = []
>>>for sex in "MF":            #Male,Female
			for size in "SMLX":      #Small, Medium, Large, eXtra large
					if sex == "F" and size == "X":
								continue;
					for color in "BGW":  #Black, Gray, White
							codes.append(sex + size + color);
							
>>>codes = [s + z + c for s in "MF" for z in "SMLX" for c in "BGW" if not (s == "F" and z == "X")];

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值