Python学习(四)数据结构——listtuplerange

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

序列类型 list tuple range

list 和 tuplelist:列表,由 [] 标识; 有序;可改变列表元素

tuple:元组,由 () 标识; 有序;不可改变元组元素(和list的主要区别)

list 和 tuple 的创建:

1PRint([])#空list2print(["a",1,True])#元素类型不限3print([xforxinrange(0,6)])#列表推导式4print(list("a"),type(list("a")))#强制转化56print(())#空tuple7print((1))#不是tuple8print((1,))#单一元素tuple 一定要加,9print(("a",1,True))#元素类型不限10print(tuple("a"),type(tuple("a")))#强制转化

空list l = []

list 用一对方括号,用','隔开里面的元素 l = [a] l = ["a",1,True] 元素类型不限

列表推导式,如:[x for x in range(0,6)] (下方会详细介绍 range 及 列表推导式)

类型转换 list()

空tuple t = ()

tuple 若只有一个元素时,注意表示为 t = (1,) 一定要有逗号

tuple 用一对圆括号,用','隔开里面多个的元素 t = ("a",1,True) 元素类型不限

类型转换 tuple()

rangerange 可方便的生成一个等差的序列,有两种表示 range(stop) 、range(start, stop[, step]) ; 通常用在 for循环语句中

range(stop) 表示 0 到 stop(不包含stop) 等差为1 的数,如 range(4) 表示 0 1 2 3

range(start, stop[, step]) 表示 从 start 到 stop(不包含stop) 等差为step的数;step缺省为1,可设置为负数

1print(type(range(4)))#range本身就是一个type2foriinrange(4):3print(i)#0 1 2 34foriinrange(-1):#从0计数,无值5print(i)6foriinrange(4,7):#4 5 67print(i)8foriinrange(2,7,2):#2 4 69print(i)10foriinrange(5,2,-1):#5 4 311print(i)

序列操作一般操作,不改变list本身

OperationResultxins

Trueif an item ofsis equal tox, elseFalse

xnotins

Falseif an item ofsis equal tox, elseTrue

s+t

the concatenation ofsandt

s*norn*s

nshallow copies ofsconcatenated

s[i]

ith item ofs, origin 0

s[i:j]

slice ofsfromitoj

s[i:j:k]

slice ofsfromitojwith stepk

len(s)

length ofs

min(s)

smallest item ofs

max(s)

largest item ofs

s.index(x[,i[,j]])

index of the first occurrence ofxins(at or after indexiand before indexj)

s.count(x)

total number of occurrences ofxins

1s = ["a",1,True,["b"],2]2print("a"ins)#判断元素存在于s3print("a"notins)#判断元素不存在于s4print("b"ins)5print(1.0ins)#这边不判断int float类型不同6print("1"ins)#这边的1为字符串7a = [1,2]8b = [2,1,0]9print(a+b)#序列相加10print(a*3)#序列乘法11s = [0,1.0,2,3,4,5,6,7,8]12print(s[0],s[2],s[3])#通过下标来取出对应的元素13print(type(s[0]))14print(type(s[1]))15print(s[2:4])#取出一段list16print(s[2:7:2])#根据步长取出一段list17print(len(s))#list长度,即包含几个元素18sum =019foriinrange(0,len(s)):#使用for循环来取出list的每个元素20print(s[i])21sum += i#赋值的简单表达式,相当于 sum = sum + i22print(sum)#总和23print(min(s),max(s))#取最小/最大;注意元素类型间若不可比较,会报错24s = [2,3,1,2,2,3]25print(s.index(2))#查找对应元素第一次出现的下标26#print(s.index(4)) # 不存在该元素会报错27print(s.index(2,3))#从下标为3的开始找起28print(s.index(2,3,4))#从下标为3到下标4的阶段内找29print(s.count(2))#输出为2的元素的个数30print(s.count("2"))#找不到匹配元素,返回0

上方列出的操作方法对 tuple 也都适用,因为并不改变序列本身的元素,如

1s = (2,3,1,2,2,3)2print(s[2],s[2:4],len(s),s.count(2))#对tuple均适用

改变序列的操作:仅对 list 适用;若对 tuple 操作,会报错;clear() 和 copy() 是 Python 3.3 才新增的方法

OperationResults[i]=x

itemiofsis replaced byx

s[i:j]=t

slice ofsfromitojis replaced by the contents of the iterablet

s[i:j:k] = t

the elements of s[i:j:k] are replaced by those of t

dels[i:j]

same ass[i:j]=[]

del s[i:j:k]

removes the elements of s[i:j:k] from the list

s.pop([i])

retrieves the item at i and also removes it from s

s.remove(x)

remove the first item from s where s[i] == x

s.clear()

removes all items from s (same as del s[:])

s.append(x)

appendsxto the end of the sequence (same ass[len(s):len(s)]=[x])

s.extend(t)

extends s with the contents of t (same as s[len(s):len(s)] = t)

s.insert(i, x)

inserts x into s at the index given by i (same as s[i:i] = [x])

s.copy()

creates a shallow copy ofs(same ass[:])

s.reverse()

reverses the items of s in place

list的增、删、改的操作实际都比较实用,需要熟练掌握

list元素更改

可对 list 不同的下标表示法做以下操作,一般 list 下标的操作仅作对单一元素的更改赋值,如 s[0]=1 ;对多个元素的操作见下方示例(仅供参考)

1s = [0,1,2,3]2s[0] ="1"3print(s)#对list的某一元素赋另外的值,类型也跟随改变4s[4] = 1#不可超过原list的长度,会报错5s[0:3] = [2,3,4]#可对一段元素赋另外的值6print(s)7s[0:3] = ["x","x"]#可缺少,元素个数也就相应的减少了8print(s)9s[0:2] = ["x","x","x","x"]#可增加,元素个数也就相应的减加了10print(s)11s[0] = [0,0]#单个元素注意,相当于赋值,把序列赋予该元素12print(s)13s[1:2] =[0,0]14print(s)15s = [0,1,2,3,4,5,6,7,8]16s[1:8:2] = ["x"]*417#s[1:8:2] = ["x"]*3 # 这种表示方式元素个数一定需要相同,不然会报错18print(s)

list operation

list元素删除

1s = [0,1,2,3,4,5,6,7,8]2dels[0:4]#删除对应的元素3print(s)4s = [0,1,2,3,4,5,6,7,8]5dels[1:8:2]#做删除6print(s)7s = [0,1,2,3,4,5,6,7,8]8s.pop(3)9print(s.pop(3),s)#做删除,并且返回该元素的值10print(s.pop(),s)#默认删除最后一个11s = [2,"1",1.0,1,2,1]12s.remove(1)#删除第一个值为 1 的元素13print(s)14s.clear()#置空,Python3.3引入15print(s)

list元素增加

1s = [0,1,2,3,4]2s.append(5)#list 最后加一个元素3print(s)4s.extend([6,7])#list 最后拼接序列5print(s)6s.extend(range(3))7print(s)8s.insert(1,["x"])#在1的位置插入["x"]9print(s)

其他操作,reverse、copy 等

1s = [1,2,3]2c = s.copy()#相当于 c = s3print(c)4c.reverse()5print(c)6s = [2,3,1,4]7s.sort()#排序8print(s)9#s = ["b",1,"a",True] # 报错,必须是可比较的类型10s = ["b","a"]11s.sort()12print(s)

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航