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序列方法整理的主要内容,如果未能解决你的问题,请参考以下文章

IOS开发-OC学习-常用功能代码片段整理

小程序各种功能代码片段整理---持续更新

列表知识点整理

VS2015 代码片段整理

C#常用代码片段备忘

sublime text3 增加代码片段(snipper)