2.2列表(list)

   列表是最常用的Python数据类型,同时也是最常用的数据存储容器,它可以存储任意对象(元素);它用逗号分隔各个元素并使用方括号([])括起来

2.2.1新增插入(list.append(element) ; list.insert(index,element))

  list.append(element):在列表末尾增加一个元素

>>> a=[1,2,3]

>>> a.append(4)

>>> a

[1, 2, 3, 4]

>>> 

  list.insert(index,element):在指定索引位置前面插入一个元素,如果指定索引位置超出列表长度,则在列表最后插入该元素

>>> a=[1,2,3]

>>> a.insert(2,5)

>>> a

[1, 2, 5, 3]

>>> 

 

2.2.2删除(del list[index];del list ; list.remove(element);list.pop())

  del list(index):删除指定索引位置的元素,索引位置超出列表长度会报错IndexError: list assignment index out of range

>>> a=[1,2,2,3,2,3,4,5]

>>> del a[3]        #删除第四个元素

>>> a

[1, 2, 2, 2, 3, 4, 5]

>>> 

  del list:删除整个列表

>>> a=[1,2,3]

>>> a

[1, 2, 3]

>>> del a

>>> a

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

NameError: name 'a' is not defined

>>> 

 

  list.remove(element):删除列表中第一个指定元素,如果指定的元素列表中不存在会报错ValueError: list.remove(x): x not in list

>>> a

[1, 2, 2, 2, 3, 4, 5]

>>> a.remove(2)      #删除列表中第一个2

>>> a

[1, 2, 2, 3, 4, 5]

>>> 

 

  list.pop():取出并删除对应索引位置的元素,不传索引位置默认取出删除最后一个元素

>>> a

[1, 2, 2, 3, 2, 3, 4, 5]

>>> a.pop()         #取出并删除列表中最后一个元素

5

>>> a.pop(2)        #取出并删除列表中第三个元素   

2

>>> a

[1, 2, 3, 2, 3, 4]

>>> 

2.2.3修改(list[index]=element)

  list[index]=element:直接通过列表索引位置修改对应元素,如果修改的索引位置超出列表范围会报错:IndexError: list assignment index out of range

[1, 2, 2, 3, 4, 5, 5]

>>> a[1]=10

>>> a

[1, 10, 2, 3, 4, 5, 5]

>>> 

 

2.2.4查看(list[index];遍历)

       list[index]:直接通过索引查看对应位置的元素,如果查看的索引位置超出列表范围会报错:IndexError: list index out of range

       遍历:顺序查看列表中每一个元素

for I in list:

print I

>>> a

[1, 10, 2, 3, 4,]

>>> a[3]

3

>>> for i in a:

...     print i

...

1

10

2

3

4

>>> 

2.2.5长度len(list)

  len(list):返回列表长度

>>> a

[1, 10, 2, 3, 4]

>>> len(a)

5

>>> 

 

2.2.6数学计算(list1.extend(list2);list1+list2;list1*(num);cmp(list1,list2))

       list1+list2:两个list元素合并形成新的list

>>> a

[1, 10, 2, 3, 4]

>>> a+[1,2,3]

[1, 10, 2, 3, 4, 1, 2, 3]

       list1.extend(list2):在list1的末尾插入list2中的所有元素

>>> a

[1, 10, 2, 3, 4]

>>> a.extend([4,5,6])

>>> a

[1, 10, 2, 3, 4, 4, 5, 6]

>>> 

       list1*(num):将list1中的元素复制num次,生成一个新的list

>>> a=[1,2,3]

>>> a*3

[1, 2, 3, 1, 2, 3, 1, 2, 3]

>>> a

[1, 2, 3]

>>> 

  cmp(list1,list2):比较list1list2的大小,先比较两个列表第一个元素(ascii)的大小,第一个元素相同则比较第二个元素,以此类推,如果list1大,则返回1list2大返回-1,两个list相同返回0

>>> cmp([1,23],[1,2,3])

1

>>> 

>>> cmp(["Z",23],["a",2,3])

-1

>>> cmp([1,2,3],[1,2,3])

0

>>> 

2.2.7统计列表中某一元素出现的次数(list.count(element))

       list.count(element):返回list中指定元素出现的次数

>>> a=[1,2,2,3,2,3,4,5]

>>> a.count(2)

3

>>> 

 

2.2.8确定元素索引位置(list.index(element))

  list.index(element):返回指定元素在列表中第一次出现时的索引位置,如果元素不存在会报错:ValueError: 9 is not in list

>>> a=[1,2,2,3,2,3,4,5]

>>> a.index(2)

1

>>> a.index(9)

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

ValueError: 9 is not in list

 

2.2.9列表排序(list.sort ();sorted(list))

  list.sort (reverse=False):将原列表中元素升序排序

>>> a

[1, 2, 3, 2, 3, 4]

>>> a.sort()

>>> a

[1, 2, 2, 3, 3, 4]

>>> 


    sort方法,函数嵌套

>>> list1=[(1,5,3),(1,3,6,3),(1,1,2,4,5,6),(1,9)]
>>> def L(seq):
...     return len(seq)
...
>>> list1.sort(key=L,reverse=True)
>>> print list1
[(1, 1, 2, 4, 5, 6), (1, 3, 6, 3), (1, 5, 3), (1, 9)]
>>> print L(list1)
4
>>> list2=[(1,5,3),(1,3,6,3),(1,1,2,4,5,6),(1,9)]
>>> list2.sort(key=L,reverse=False)
>>> print list2
[(1, 9), (1, 5, 3), (1, 3, 6, 3), (1, 1, 2, 4, 5, 6)]
>>> list2=[(1,1,3),(1,2,6,3),(1,3,3,4,5,6),(1,9)]
>>> list2.sort(key=L,reverse=True)
>>> print list2
[(1, 3, 3, 4, 5, 6), (1, 2, 6, 3), (1, 1, 3), (1, 9)]
>>> def K(seq):
...     return seq[1]
...
>>> list2.sort(key=K,reverse=True)   # 在sort函数里面执行时,会把list2中的元素遍历给K
>>> print list2
[(1, 9), (1, 3, 3, 4, 5, 6), (1, 2, 6, 3), (1, 1, 3)]

 

 

      sorted(list):将列表升序排序之后生成一个新的list

>>> a=[4,3,5,2]

>>> sorted(a)

[2, 3, 4, 5]

>>> a

[4, 3, 5, 2]

>>> 

 

2.2.10列表倒序排列(list.reverse())

  list.reverse():将列表倒序排列

>>> a

[4, 3, 5, 2]

>>> a.reverse()

>>> a

[2, 5, 3, 4]

>>> 

2.2.11列表去重(排序)(set(list))

  set(list):将列表去重排序

>>> a=[3,3,4,2,2,5]

>>> set(a)

set([2, 3, 4, 5])

>>> list(set(a))

[2, 3, 4, 5]

>>> 

 

2.2.12列表合并(zip(list1,list2))

       zip(list1,list2):list1lsit2中索引位置相同的元素取出组合成一个元组,将组合成的所有元组存入一个list中,如果两个list中元素数量不一致,多余的元素会被自动剔除

>>> a=["a","b","c"]

>>> b=[1,2,3,4,5]

>>> zip(a,b)

[('a', 1), ('b', 2), ('c', 3)]

>>> a

['a', 'b', 'c']

>>> b

[1, 2, 3, 4, 5]

>>> 

2.2.13将字符串转换为列表(string.split ())

       string.split ():将字符串中元素去掉()中的内容并分割,生成一个列表

>>> a="i am a sunny big boy"

>>> a.split()

['i', 'am', 'a', 'sunny', 'big', 'boy']

>>> a

'i am a sunny big boy'

 

>>> a="i*am*a*sunny*big*boy"

>>> a.split("*")

['i', 'am', 'a', 'sunny', 'big', 'boy']

>>> 

 

2.2.14将列表转换为字符串(“”.join(list))

       “”.join(list):将列表中元素按照冒号中指定的符号链接,生成一个字符串

>>> a

['i', 'am', 'a', 'sunny', 'big', 'boy']

>>> "*".join(a)

'i*am*a*sunny*big*boy'

>>> a

['i', 'am', 'a', 'sunny', 'big', 'boy']

>>> 

 

2.2.15切片操作sequence[a:b:c]

  sequence[a:b:c]:可以对字符串、元组、列表等序列进行切片操作,其中a,b,c为三个非必填的参数,a表示操作的起始索引位置,b表示操作的终止索引位置,c代表步长;c的默认值为1

a=[0,1,2,3,4,5,6,7,8,9]

a[0]>>>0

a[0:3]>>>[0,1,2]

a[3:]>>>[3,4,5,6,7,8,9]

a[:3]>>>[0,1,2]

a[0:10:2]>>>[0,2,4,6,8]

a[::-1]>>>[9,8,7,6,5,4,3,2,1,0]

a[-1:]>>>[9]

a[:-1]>>>[0,1,2,3,4,5,6,7,8]      #从第一个元素开始取值,取到倒数第一个元素,等价于a[0:-1]

a[-2:-8:-2] >>>[8, 6, 4]    #从倒数第二个数8开始取值,取到倒数第八个数2,步长为-2(倒着每隔两个元素取一个)

a[-2:-8:2] >>>[]

posted on 2018-01-02 10:19  流雲飞羽  阅读(545)  评论(0编辑  收藏  举报