Python序列方法整理
Posted 福逗
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python序列方法整理相关的知识,希望对你有一定的参考价值。
序列通用操作:
1、判断数据是否存在与欲裂中: x(元素) in s(序列) || x(元素) not in s(序列)
>>> num=[1,2,3,4,‘tom‘,‘jack‘,‘marry‘] >>> ‘tom‘ in num True >>> ‘marry‘ not in num False
2、连接序列 : s1(序列)+s2(序列)
>>> num1=[1,2,3,4] >>> num2=[‘tom‘,‘marry‘,‘jack‘] >>> num1+num2 [1, 2, 3, 4, ‘tom‘, ‘marry‘, ‘jack‘]
3、重复序列元素:[num]*3
>>> [3]*4 [3, 3, 3, 3] >>> num1=[1,2,3,4] >>> num1*2 [1, 2, 3, 4, 1, 2, 3, 4]
4、通过下表获取元素:s[ i ]
>>> num=[‘marry‘,‘jom‘,‘doudou‘,‘jiangjiang‘] >>> num[2] ‘doudou‘ >>> num[1] ‘jom‘
>>> num[-1]
‘jiangjiang‘ //角标为-1的是最后一个元素
5、访问指定索引范围元素:s [ i : j ] //访问角标以 i 开始,j 结束的元素 (注意:包头不包尾,即不包括元素 s[j] )
>>> num=[‘marry‘,‘jom‘,‘doudou‘,‘jiangjiang‘,1,2,3] >>> num[3:7] [‘jiangjiang‘, 1, 2, 3] //此处即不包括元素num[7]元素
6、按步长访问指定索引范围:s [ i : j : k ] //访问角标以 i 开始,j 结束的元素,中间跳过 k -1 个元素
>>> num=[‘marry‘,‘jom‘,‘doudou‘,‘jiangjiang‘,1,2,3] >>> num[3:7] [‘jiangjiang‘, 1, 2, 3] >>> num[3:7:2] //每获取一个元素,跳过2-1个元素 [‘jiangjiang‘, 2] >>> num[3:7:3] [‘jiangjiang‘, 3] //每获取一个元素,跳过3-1个元素
7、获取序列的长度: len(s)
>>> num=[‘marry‘,‘jom‘,‘doudou‘,‘jiangjiang‘,1,2,3] >>> len(num) 7
8、获取序列的最小或最大值 :max(s) || min(s)
>>> num=[33,44,55,66,111,33] >>> max(num) 111 >>> min(num) 33 >>> num2=[‘q‘,‘w‘,‘e‘,‘r‘,‘f‘,‘a‘] >>> max(num2) ‘w‘ >>> min(num2) ‘a‘
9、统计序列的总和:sum(s)
>>> num1=[1,2,3,4,5,6] >>> sum(num1) 21
10、检索某一元素第一次出现的下标: s.index(x) //s为序列,x为要查询元素
>>> num=[‘marry‘,‘bob‘,‘marry‘,‘jack‘,‘tom‘,‘shark‘,‘eye‘] >>> num.index(‘marry‘) //检索第一次出现的位置 0 >>> num.index(‘shark‘) 5
11、统计某一元素在序列中出现的次数: s.count(x) //s为序列,x为要查询元素
>>> num=[‘marry‘,‘bob‘,‘marry‘,‘jack‘,‘tom‘,‘shark‘,‘eye‘] >>> num.count(‘marry‘) 2 >>> num.count(‘eye‘) 1
以上所有Python序列都支持。
可变序列通用操作
1、增加序列中的元素
s.insert(n,obj) //在角标为n的位置插入对象obj
>>> num=[‘marry‘,‘bob‘,‘jack‘] >>> num.insert(2,‘zhangsan‘) >>> num [‘marry‘, ‘bob‘, ‘zhangsan‘, ‘jack‘] >>> num.insert(2,[‘lisi‘,‘wangwu‘]) >>> num [‘marry‘, ‘bob‘, [‘lisi‘, ‘wangwu‘], ‘zhangsan‘, ‘jack‘]
s.append(obj) //把括号中元素作为一个对象加入
>>> num=[‘marry‘,‘bob‘,‘jack‘] >>> num.append([1,2,3]) >>> num [‘marry‘, ‘bob‘, ‘jack‘, [1, 2, 3]] >>> num.append(‘tiger‘) >>> num [‘marry‘, ‘bob‘, ‘jack‘, [1, 2, 3], ‘tiger‘]
s.extend(obj) //把obj这个对象中的元素加入s序列中
>>> num=[‘marry‘,‘bob‘,‘jack‘] >>> num2=[1,2,3] >>> num.extend(num2) >>> num [‘marry‘, ‘bob‘, ‘jack‘, 1, 2, 3]
2、删除元素
del s [ i ] //删除序列元素中角标为i的元素
>>> num=[‘marry‘,‘bob‘,‘jack‘] >>> del num[0] >>> num [‘bob‘, ‘jack‘] >>> del num[-1] >>> num [‘bob‘]
del s[m:n:k] //删除为角标 m到n的元素,包头不包尾,每删除一个元素跳过k-1个元素
>>> num=[‘marry‘,‘bob‘,‘jack‘,‘zhangsan‘,‘lisi‘,‘wangwu‘] >>> del num[0:-1:2] >>> num [‘bob‘, ‘zhangsan‘, ‘wangwu‘]
s[m:n]=[] //删除序列角标为m到n-1
>>> num=[‘marry‘,‘bob‘,‘jack‘,‘zhangsan‘,‘lisi‘,‘wangwu‘] >>> num[2:5]=[] >>> num [‘marry‘, ‘bob‘, ‘wangwu‘]
s.pop(n) //返回并删除角标为n的元素,不写角标默认删除并弹回最后一个元素。角标越界报异常
>>> num=[‘marry‘,‘bob‘,‘jack‘,‘zhangsan‘,‘lisi‘,‘wangwu‘] >>> num.pop() ‘wangwu‘ >>> num [‘marry‘, ‘bob‘, ‘jack‘, ‘zhangsan‘, ‘lisi‘] >>> num.pop(0) ‘marry‘ >>> num [‘bob‘, ‘jack‘, ‘zhangsan‘, ‘lisi‘]
s.remove(obj) //在序列中删除obj这个元素,若元素不存在,则抛异常
>>> num=[‘marry‘,‘bob‘,‘jack‘,‘zhangsan‘,‘lisi‘,‘wangwu‘] >>> num.remove(‘marry‘) >>> num [‘bob‘, ‘jack‘, ‘zhangsan‘, ‘lisi‘, ‘wangwu‘] >>> num.remove(‘liubei‘) //序列中没有‘liubei’ ,抛异常 Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: list.remove(x): x not in list
s.clear() //删除序列中的所有元素
>>> num=[‘marry‘,‘bob‘,‘jack‘,‘zhangsan‘,‘lisi‘,‘wangwu‘] >>> num [‘marry‘, ‘bob‘, ‘jack‘, ‘zhangsan‘, ‘lisi‘, ‘wangwu‘] >>> num.clear() >>> num []
3、修改序列元素
s[i]=x //序列中角标为i的元素赋值为x
>>> num=[‘marry‘,‘bob‘,‘jack‘,‘zhangsan‘,‘lisi‘,‘wangwu‘] >>> num [‘marry‘, ‘bob‘, ‘jack‘, ‘zhangsan‘, ‘lisi‘, ‘wangwu‘] >>> num[-1]=‘liubei‘ >>> num [‘marry‘, ‘bob‘, ‘jack‘, ‘zhangsan‘, ‘lisi‘, ‘liubei‘] >>> num[-3]=‘guanyu‘ >>> num [‘marry‘, ‘bob‘, ‘jack‘, ‘guanyu‘, ‘lisi‘, ‘liubei‘]
s[n:m]=t //将s序列中角标从n到m-1 的元素替换成t序列的元素
>>> num=[‘marry‘,‘bob‘,‘jack‘,‘zhangsan‘,‘lisi‘,‘wangwu‘] >>> num [‘marry‘, ‘bob‘, ‘jack‘, ‘zhangsan‘, ‘lisi‘, ‘wangwu‘] >>> num[1:3]=[11,12,13,14,15,16] >>> num [‘marry‘, 11, 12, 13, 14, 15, 16, ‘zhangsan‘, ‘lisi‘, ‘wangwu‘] >>> num[:]=[‘q‘,‘w‘,‘e‘,‘r‘,‘t‘,‘y‘,‘u‘,‘i‘] //整体全部替换 >>> num [‘q‘, ‘w‘, ‘e‘, ‘r‘, ‘t‘, ‘y‘, ‘u‘, ‘i‘]
s[n:m:k]=t //将s序列中角标从n到m-1 的元素替换成t序列的元素,每替换一个元素跳过k-1个元素,切记t序列元素的个数必须和被替换的元素个数相等
>>> num=[‘marry‘,‘bob‘,‘jack‘,‘zhangsan‘,‘lisi‘,‘wangwu‘] >>> num[2:5:2]=[‘hello‘,‘world‘] >>> num [‘marry‘, ‘bob‘, ‘hello‘, ‘zhangsan‘, ‘world‘, ‘wangwu‘] >>> num[2:5:2]=[‘hello‘,‘world‘,‘kkkkk‘] //此时替换的序列多了一个元素,抛异常 Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: attempt to assign sequence of size 3 to extended slice of size 2
4、元素排序翻转
s.reverse() //元素内部顺序颠倒
>>> num=[1,2,3,4,5,6,7,8] >>> num [1, 2, 3, 4, 5, 6, 7, 8] >>> num.reverse() >>> num [8, 7, 6, 5, 4, 3, 2, 1] >>> print(num.reverse()) //只在内部翻转,并不返回什么 None
5、赋值序列内部元素
new=old.copy() //讲old序列中的元素复制的new序列上
>>> num=[‘kk‘,‘ff‘,‘jj‘,‘gg‘] >>> num1=num.copy() >>> num1 [‘kk‘, ‘ff‘, ‘jj‘, ‘gg‘] >>> num1[2]=3 >>> num1 [‘kk‘, ‘ff‘, 3, ‘gg‘] >>> num [‘kk‘, ‘ff‘, ‘jj‘, ‘gg‘]
new=old[:] //讲old序列中的元素复制的new序列上
>>> num=[‘kk‘,‘ff‘,‘jj‘,‘gg‘] >>> num1=num[:] >>> num [‘kk‘, ‘ff‘, ‘jj‘, ‘gg‘] >>> num1 [‘kk‘, ‘ff‘, ‘jj‘, ‘gg‘] >>> num1[2]=‘tom‘ >>> num1 [‘kk‘, ‘ff‘, ‘tom‘, ‘gg‘] >>> num [‘kk‘, ‘ff‘, ‘jj‘, ‘gg‘]
old=new //此种方法复制元素和上面两种复制有很大的不同,old与new二者共享引用,其实质任然指向同一个内存地址,无论哪一个序列发生改变,另一个会发生相同改变。
>>> num=[‘kk‘,‘ff‘,‘jj‘,‘gg‘] >>> num1=num >>> num1 [‘kk‘, ‘ff‘, ‘jj‘, ‘gg‘] >>> num1[2]=‘hello‘ >>> num1 [‘kk‘, ‘ff‘, ‘hello‘, ‘gg‘] >>> num [‘kk‘, ‘ff‘, ‘hello‘, ‘gg‘]
,
以上是关于Python序列方法整理的主要内容,如果未能解决你的问题,请参考以下文章