包含了大部分的序列的操作和函数
序列中+和*的操作和is,in函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | # +的操作 i = (1,2,3) i = i + i # (1,2,3,1,2,3) a = (1,2,3) id(a) #1440589908416 a += a id(a) #1440589908416 #发现两次的id是一模一样的,说明变量(对象)的id是固定的,不管对它进行什么样的加法运算! # *的操作 i = i * 2 # (1,2,3,1,2,3) a = (1,2,3) id(a) #1440589908416 a *= a id(a) #1440512989913 #发现这两次的id并不相同。 #加法和乘法结果的id值并不相似,为此,python推出了is和is not 函数来判断两个对象是否是相同的 x = "dgz" y = "dgz" x is y #true,说明x和y是相同的对象 a = [1,2,3] b = [1,2,3] a is b #false,说明a和b不是相同的对象 #in和not in函数,比如我们想知道字符串"dgz"里面是否含有"d"字符,我们可以使用: "d" in "dgz" #true "d" not in "dgz" #false |
删除对象
1 2 3 4 5 6 7 8 9 10 11 12 13 | #删除全部对象 x = 12 y = [1,2] del x,y #我们会发现对象x和y全部不见了! print(x) #error,此时会报错 #删除数组里面的部分对象 x = [1,2,3,4,5] del x[1:4] #x = [1,5]最后一个是能取到的,左闭右开 #删除数组所有内容,但是保留着数组的变量对象 x = [1,2,3,4] del x[:] 或 del x[::] 或 del x[::1] |
函数:list()、tuple()、str()
1 2 3 4 5 6 7 8 9 10 11 | #list() 将可迭代对象或者元组,数组等等变成列表 x = "denggaozheng" x.list() #['d','g',...,'g'] #tuple() 将可迭代对象或者数组变成元组 x = (1,2,3,4,5) x.tuple() #str() 将可迭代对象等转换成字符串 x = (1,2,3,4) x.__str()__ #[1,2,3,4]字符串类型的 |
函数:max()和min()
1 2 3 4 5 6 7 8 9 | #都知道min找最小值,max找最大值,那就举一些极端的例子 #如果传入的数组是空的,那么找最小最大的时候会报错的 s = [] min(s) #error #min max函数都可以传入默认值default s = [] min(s,default = "啥都没有!") |
函数:sum()、len()
1 2 3 4 5 6 7 8 9 10 11 | #sum() 用于求和,可以设定求和开始的位置,比如我从一百开始加s这个数组 s = [1,2,3,1,2] sum(s,start = 100) #100+1+2+3+1+2=109 #如果start=100报错,那就直接sum(s,100) #len() 方法返回对象(字符、列表、元组等)长度或项目个数 str = "runoob" len(str) #6 l = [1,2,3,4,5] len(l) #5 |
函数:sorted()和reversed()
1 2 3 4 5 6 7 8 9 10 11 12 13 | #传什么参数给sorted()他都可以操作! #sorted()返回的是一个全新的列表(对参数列表进行排序之后得到的新列表),而原列表不会发生改变。 s = [1,4,2,5] sorted(s) #[1,2,3,4] print(s) #[1,4,2,5] #sort会对原先的列表进行修改 s.sort() #[1,2,4,5] #sorted还可以进行翻转操作 sorted(s,reverse = true) #reversed返回的是迭代器,参数里面可以放数组元组等等 a = range(5, 9) list(reversed(a)) #[5,6,7,8,9] |
函数:all()和any()
1 2 3 4 5 6 | #all函数判断可迭代对象中是否所有元素的值都为真,其中0是假 a = [1,2,0] all(a) #false #any函数判断可迭代对象中是否存在为真的值,其中0是假 a = [0,0,1] any(a) #true |
函数:enumerate()
1 2 3 | #enumerate函数用于将一个可遍历的数据对象(列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,加入start表示下标开始的位置。一般用在 for 循环当中,通常与list函数搭配使用。 seasons = ['Spring', 'Summer', 'Fall', 'Winter'] list(enumerate(seasons, start=1)) #[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')] |
函数:zip()常用!!
1 2 3 4 5 6 7 8 9 10 11 12 13 | #zip函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组 a = [1,2,3] b = [4,5,6] c = [4,5,6,7,8] zipped = zip(a,b) # 打包为元组的列表 [(1, 4), (2, 5), (3, 6)] zip(a,c) # 元素个数与最短的列表一致 [(1, 4), (2, 5), (3, 6)] zip(*zipped) # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式 [(1, 2, 3), (4, 5, 6)] #拓展:如果长的数组和短的数组进行zip,而我们不想按最短的来匹配,可以导入itertools import itertools a = [1,2,3,4,5,6,7] b = [1,2,3,4] it = itertools.zip_longest(a,b) print(list(it)) #[(1, 1), (2, 2), (3, 3), (4, 4), (5, None), (6, None), (7, None)] |
函数:map()常用!!和filter函数、iter函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #map函数会根据提供的函数对指定序列做映射。第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次function 函数返回值的新列表。默认返回的是迭代器:<map object at 0x000001289EC93490>,但是使用list函数可以让他变成数组。 #先定义一个函数fun def fun(x): x = x + 1 s = [1,2,3,4,5] list(map(fun,s)) #[2,3,4,5,6] #map函数传递的是包含计算结果的数,而filter函数传递的是计算结果为真的数(就没有0了)。 #例如我现在想要找到下面字符串中的大写字符 strn = "DengGaoZheng" filter(str.isupper,strn) #['D',"G",'Z'] #iter函数:把一个可迭代对象变成迭代器 x = [1,2,3] y = iter(x) #这时候y就是一个迭代器啦! #使用next函数可以将迭代器y中的元素逐一取出来! next(y) #1 next(y) #2 next(y) #3 next(y) #当我们拿完了迭代器里面的元素,再使用next的时候就会报异常!我们还可以自定义报异常的值,在next的第二个参数 next(y,"已经没了!") #已经没了! |
迭代器,迭代对象
首先要知道一个迭代器一定是一个迭代对象!
区别是:迭代对象是可以反复使用的,而迭代器是一次性的。