List列表

刘超 1月前 ⋅ 4536 阅读   编辑

目录
  1、list构造函数

    - 将字符创转化为列表
  2、list初始化
    - 相同的值初始化
    - 连续数字初始化
  2、元素赋值
  3、分片操作
  4、count函数
  5、len函数
  6、append函数
  7、extend函数
  8、insert函数
  9、pop函数
  10、remove函数
  11、index函数
  12、sort函数
  13、cmp函数
  14、set函数
  15、过滤掉List中的None
  16、遍历list
      返回下标与值

 

一、list构造函数

  作用:将字符创转化为列表

  示例:

>>> word = 'hello'
>>> name = list(word)
>>> name
['h', 'e', 'l', 'l', 'o']
>>> 

二、初始化

  作用:相同的值初始化

  示例:

# -- Python2.x
#------ 第一种方法
>>> list2 = ['a' for n in range(4)]
>>> print list2
['a', 'a', 'a', 'a']

#---- 第二种方法:字符和数字
>>> list3 = ['b'] * 4
>>> print list3
['b', 'b', 'b', 'b']
>>> list4 = [3] * 4
>>> print list4
[3, 3, 3, 3]

# -- Python3.x
#------ 第一种方法
>>> list2 = ['a' for n in range(4)]
>>> print(list2)
['a', 'a', 'a', 'a']

#---- 第二种方法:字符和数字
>>> list3 = ['b'] * 4
>>> print(list3)
['b', 'b', 'b', 'b']
>>> list4 = [3] * 4
>>> print(list4)
[3, 3, 3, 3]

  作用:连续数字初始化

  示例:

# -- Python2.x
>>> list1 = [n for n in range(1,6)]
>>> print list1
[1, 2, 3, 4, 5]

# -- Python3.x
# 连续数字初始化
>>> list1 = [n for n in range(1,6)]
>>> print(list1)
[1, 2, 3, 4, 5]

三、元素赋值

  功能:赋值

  示例:

>>> list1 = [1,'234',2]
>>> list1
[1, '234', 2]
>>> list1[0] = 'hello'
>>> list1
['hello', '234', 2]

  注意:通过list[0]= 'hel',如果原来位置上有值,会覆盖掉原来的

三、分片操作

  1、显示

>>> list1
['hello', '234', 2]
>>> list1[1:2]
['234']
>>> list1[1:]
['234', 2]
>>> list1[:2]
['hello', '234']
>>> list1[:]
['hello', '234', 2]

  2、修改

>>> list1
['hello', '234', 2]
>>> list1[1:] = list('hello')
>>> list1
['hello', 'h', 'e', 'l', 'l', 'o']

  3、插入

>>> list1
['hello', 'h', 'e', 'l', 'l', 'o']
>>> list1[2:2] = [1,2,3]
>>> list1
['hello', 'h', 1, 2, 3, 'e', 'l', 'l', 'o']
>>> list1[2:2] = 'love'
>>> list1
['hello', 'h', 'l', 'o', 'v', 'e', 1, 2, 3, 'e', 'l', 'l', 'o']

  注意:往list1的某个位置插入列表或字串时,列表的每项、字串的每个字符都会作为list1的一个元素,而不会整体插入。
  思考:那作为整体插入咋办?

>>> list6
[2, 'a']
>>> list6.insert(1,(3,4,5))
>>> list6
[2, (3, 4, 5), 'a']
>>> list6.insert(0,'hello')
>>> list6
['hello', 2, (3, 4, 5), 'a']

  4、删除

>>> list1
['hello', 'h', 'l', 'o', 'v', 'e', 1, 2, 3, 'e', 'l', 'l', 'o']
>>> 
>>> list1
['hello', 'h', 'l', 'o', 'v', 'e', 1, 2, 3, 'e', 'l', 'l', 'o']
>>> list1[2:] = []
>>> list1
['hello', 'h']
>>> list1 = ['hello', 'h', 'l', 'o', 'v', 'e', 1, 2, 3, 'e', 'l', 'l', 'o']
>>> list1[2:len(list1)] = []
>>> list1
['hello', 'h']

四、count函数

  功能:统计列表中某元素出现的次数

  示例:

>>> list1 = [1,2,3,3]
>>> list1.count(3)
2

五、len函数

  功能:统计列表中元素的个数

  示例:

>>> list1
[1, 2, 3, 3]
>>> len(list1)
4

六、append函数

  功能:往列表的最后一个位置插入(入栈)操作

  示例:

>>> list1
[1, 2, 3, 3]
>>> list1.append('hello')
>>> list1
[1, 2, 3, 3, 'hello']

  扩展:可以”+“号 来实现列表的相加

>>> a = ['a','b','c']
>>> b = ['d','e','f']
>>> c = ['g','h','i']
>>> a + b + c
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']

七、extend函数

  功能:链接两个序列产生新的序列

  示例:

>>> a = [1,2,3]
>>> b = ['a','b','c']
>>> a.extend(b)
>>> a
[1, 2, 3, 'a', 'b', 'c']
>>> b
['a', 'b', 'c']

// 不能重
>>> a=['a','b','c']
>>> b=['a','b']
>>> a.extend(b)
>>> a
['a', 'b', 'c', 'a', 'b']

八、insert函数

  功能:将元素插入到列表的指定位置

  示例:

>>> list1 = [2,3]
>>> list1.insert(1,'hello')
>>> list1
[2, 'hello', 3]

九、pop函数

  功能:弹出指定位置的元素,弹出后集合就不存在该元素,相当于删除了该元素

  示例:

>>> list1
[2, 'hello', 3]
>>> list1.pop()
3
>>> list1
[2, 'hello']
>>> list1.pop(0)
2
>>> list1
['hello']

  注意:pop(n),n指明在列表中的位置,如果pop(),默认弹出最后一个元素(出栈操作)

十、remove函数

  功能:删除第一个指定元素

  示例:

>>> list1 = [2,3,4]
>>> list1.remove(3)
>>> list1
[2, 4]

十一、index函数

  功能:从列表中找出与某个元素匹配的第一个匹配项的位置

  示例:

>>> list1 = [1,2,3,4,4]
>>> list1.index(4)
3
>>> list1.index(5)
Traceback (most recent call last):
  File "", line 1, in 
ValueError: 5 is not in list

十二、reverse函数

  功能:翻转列表

>>> list1 = [1,2,3,4,4]
>>> list1.reverse()
>>> list1
[4, 4, 3, 2, 1]

十三、sort函数

  功能:队员列表进行排序

>>> list1= [2,1,44,0]
>>> list1.sort()
>>> list1
[0, 1, 2, 44]

  注意:sort函数修改了原序列,这里如果是采用b = a的方式,那么b和a指向同一个列表,还是会改变原序列。例:

>>> a = [3,2,13]
>>> b = a
>>> b.sort()
>>> b
[2, 3, 13]
>>> a
[2, 3, 13]

  思考:那么如何不改变原序列呢?

  方法一:可以利用sorted()函数。例:

>>> a = [3,2,13]
>>> b = sorted(a)
>>> b
[2, 3, 13]
>>> a
[3, 2, 13]

  方法二:创建副本。例:

>>> a = [3,2,13]
>>> b = a[:]
>>> b.sort()
>>> b
[2, 3, 13]
>>> a
[3, 2, 13]

   注意: 对于列表a:

    b = a   那么b和a都指向同一个列表

    b = a[:] 那么吧创建了一个列表副本

  1、关键字排序:key,长度(len)排序:

>>> list1 = ['aa','cccccc','b']
>>> list1.sort(key = len)
>>> list1
['b', 'aa', 'cccccc']

  2、关键字排序:reverse()

>>> list1 = [3,2,12]
>>> list1.sort(reverse = True)
>>> list1
[12, 3, 2]
>>> list1.sort(reverse = False)
>>> list1
[2, 3, 12]

  注意:reverse = True   降序

    reverse = False  升序

13.cmp函数

  功能:比较两个元素的大小

  示例:

>>> cmp(3,3)
0
>>> cmp(3,10)
-1
>>> cmp(10,3)
1

  注意:

  (1)两个元素相同返回0,前大后小返回1,前小后大返回-1

  (2)比较的对象是元素首个字符的ascii值,例:

  示例

>>> cmp('a','b')
-1
>>> cmp('aa','cc')
-1
>>> cmp('aaaa',33333)
1

14. set函数

  功能:列出列表中不重复的元素(去重)集合。例:

>>> list1 = [1,1,2,2,2,3]
>>> list2 = set(list1)
>>> list2
set([1, 2, 3])
>>> list2[2]
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'set' object does not support indexing

  注意:利用set() 函数后就变成了集合,集合中的元素无序,再利用list2[2]就出错了,因为集合无序,不支持下标访问

15、过滤掉List中的None

# python2、python3
>>> L = [0, 23, 234, 89, None, 0, 35, 9]
>>> [x for x in L if x is not None]
[0, 23, 234, 89, 0, 35, 9]

# partial
>>> from operator import is_not
>>> from functools import partial
>>> L = [0, 23, 234, 89, None, 0, 35, 9]
>>> filter(partial(is_not, None), L)
# python2
[0, 23, 234, 89, 0, 35, 9]
# python3



# lambda
>>> L = [0, 23, 234, 89, None, 0, 35, 9]
>>> filter(lambda v: v is not None, L)
# python2
[0, 23, 234, 89, 0, 35, 9]
# python3


# python3
>>> L = [0, 23, 234, 89, None, 0, 35, 9]
>>> list(filter(None.__ne__, L))
[0, 23, 234, 89, 0, 35, 9]

16、遍历list

>>> list = ['html', 'js', 'css', 'python']
>>> 
>>> # 方法1
... print '遍历列表方法1:'
遍历列表方法1:
>>> for i in list:
...     print ("序号:%s   值:%s" % (list.index(i) + 1, i))
... 
序号:1   值:html
序号:2   值:js
序号:3   值:css
序号:4   值:python
>>> print '\n遍历列表方法2:'

遍历列表方法2:
>>> # 方法2
... for i in range(len(list)):
...     print ("序号:%s   值:%s" % (i + 1, list[i]))
... 
序号:1   值:html
序号:2   值:js
序号:3   值:css
序号:4   值:python
>>> # 方法3
... print '\n遍历列表方法3:'

遍历列表方法3:
>>> for i, val in enumerate(list):
...     print ("序号:%s   值:%s" % (i + 1, val))
... 
序号:1   值:html
序号:2   值:js
序号:3   值:css
序号:4   值:python
>>> # 方法3
... print '\n遍历列表方法3 (设置遍历开始初始位置,只改变了起始序号):'

遍历列表方法3 (设置遍历开始初始位置,只改变了起始序号):
>>> for i, val in enumerate(list, 2):
...     print ("序号:%s   值:%s" % (i + 1, val))
... 
序号:3   值:html
序号:4   值:js
序号:5   值:css
序号:6   值:python

注意:本文归作者所有,未经作者允许,不得转载

全部评论: 0

    我有话说: