列表类型也是序列式的数据类型,可通过下标或者切片操作来访问某一个或某一块连续的元素。
列表的元素是可变的,可包含不同类型的元素,列表类型的元素可以是另一个序列类型。
列表使用方括号([])定义,alist = [123, 1.2, ‘foo‘, 7-9j, [1, 2]]
>>> list(‘foo‘)
[‘f‘, ‘o‘, ‘o‘]
列表的切片操作和字符串一样,切片操作符([])和索引值或索引范围一起使用。
>>> alist = [‘abc‘, 12.3, [‘inner‘, ‘list‘]]
>>> alist[2][1]
‘list‘
在等号的左边指定一个索引或者索引范围的方式来更新一个或几个元素,也可以用append()方法来追加元素到列表中去。
>>> alist
[‘abc‘, 12.300000000000001, [‘inner‘, ‘list‘]]
>>> alist[2]
[‘inner‘, ‘list‘]
>>> alist[2] = ‘inner list‘
>>> alist
[‘abc‘, 12.300000000000001, ‘inner list‘]
明确的知道要删除元素的索引可以用del语句,否则可以用remove()方法
>>> alist
[‘abc‘, 12.300000000000001, ‘inner list‘]
>>> alist.remove(12.3)
>>> alist
[‘abc‘, ‘inner list‘]
>>> del alist
== < > !=
比较操作符比较的时候使用的是内建的cmp()函数,基本的逻辑是:两个列表的元素分别进行比较,直到有一方的元素胜出。
>>> list1 = [‘abc‘, 123]
>>> list2 = [‘xyz‘, 789]
>>> list1 < list2
True
>>> list3 = [‘abc‘, 789]
>>> list2 < list3
False
>>> list1 < list3
True
切片([]和[:]):列表的切片操作返回的是一个对象或者几个对象的集合。
>>> num_list = [45, 2.2, -2, 6.19e5]
>>> str_list = [‘he‘, ‘she‘, ‘it‘]
>>> num_list[2:-1]
[-2]
>>> str_list[:2]
[‘he‘, ‘she‘]
由于列表类型的元素可以是另一个序列类型,意味着可以在列表的元素上也可以使用所有的列表操作符或者在其上执行序列类型内建的各种操作。
>>> mix_list = [4.1, [1, -90.1], ‘beef‘, (-1.9+6j)]
>>> mix_list[1][1]
-90.099999999999994
列表中(同样适用于元组),可以检查一个对象是否是一个列表(或者元组)的成员
>>> mix_list = [4.1, [1, -90.1], ‘beef‘, (-1.9+6j)]
>>> ‘beef‘ in mix_list
True
>>> ‘x‘ in mix_list
False
连接操作符允许我们把多个列表对象合并在一起,列表类型的连接操作只能在同类型之间进行,不能把两个不同类型的对象连接在一起,即使他们都是序列类型也不行
>>> list1 = [1, 2, 3]
>>> list2 = [‘a‘, ‘b‘, ‘c‘]
>>> list1 + list2
[1, 2, 3, ‘a‘, ‘b‘, ‘c‘]
列表和元组属于序列类型,可使用重复操作符
>>> list1 = [1, 2, 3]
>>> list1*3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
cmp():
对两个列表的元素进行比较;
如果比较的元素是同类型的,则比较其值,返回结果;
如果两个元素不是同一个类型,则检查它们是否是数字;
如果是数字,执行必要的数字强制类型转换,然后比较;
如果有一方的元素是数字,则另一方的元素"大"(数字是"最小的");
否则,通过类型名字的字母顺序进行比较;
如果有一个列表首先到达末尾,则另一个长一点的列表"大";
如果我们用尽了两个列表的元素而且所有元素都是相同的,那么结果就是平局,返回一个0。
>>> mix_list = [4.1, [1, -90.1], ‘beef‘, (-1.9+6j)]
>>> len(mix_list)
4
>>> lstr = [‘abc‘, ‘befc‘, ‘cdef‘]
>>> max(lstr)
‘cdef‘
>>> s = [‘They‘, ‘stamp‘, ‘when‘, ‘smail‘]
>>> sorted(s)
[‘They‘, ‘smail‘, ‘stamp‘, ‘when‘]
>>> for i in reversed(s):
... print i
...
smail
when
stamp
They
>>> s = [‘They‘, ‘stamp‘, ‘when‘, ‘smail‘]
>>> for i, m in enumerate(s):
... print i, m
...
0 They
1 stamp
2 when
3 smail
>>>
>>> sum([1, 2, 3])
6
>>> alist = [1, 2, 3]
>>> atuple = tuple(alist)
>>> alist, atuple
([1, 2, 3], (1, 2, 3))
列表函数 | 作用 |
list.append(obj) | 向列表中添加一个对象obj |
list.count(obj) | 返回一个对象obj在列表中出现的次数 |
list.extend(seq) | 把序列seq的内容添加到列表中 |
list.index(obj, i=0, j=len(list)) | 返回list[k]==obj的k值,并且k的范围在i<=k<j,否则引发ValueError异常 |
list.insert(index, obj) | 在索引量为index的位置插入对象obj |
list.pop(index=-1) | 删除并返回指定位置的对象,默认是最后一个对象 |
list.reverse() | 原地翻转列表 |
list.sort(func=None, key=None, reverse=False) | 以指定的方式排序列表中的成员,如果func和key参数指定,则按照指定的方式比较各个元素,如果reverse标志被置为True,则列表以反序排列。 sort()默认的排序算法是归并排序(或者说"timsort")的衍生算法 |
>>> al = [1]
>>> al.insert(0, 12)
>>> al.append(‘b‘)
>>> al
[12, 1, ‘b‘]
>>> al.index(1)
1
>>> al.sort()
>>> al
[1, 12, ‘b‘]
>>> al.reverse()
>>> al
[‘b‘, 12, 1]
原文:https://www.cnblogs.com/mrlayfolk/p/11973984.html