前言
在实际开发中,经常需要将一组(不只一个)数据存储起来,以便后边的代码使用。在VBA中有使用数组,可以把多个数据存储
到一起,通过数组下标可以访问数组中的每个元素。Python 中没有数组,但是加入了更加强大的列表(list)。下面就对列表的内
置方法进行介绍。
通过dir(list)可以查看列表的属性和内置方法。
print(dir(list)) Python学习交流Q群:906715085### [\'__add__\', \'__class__\', \'__contains__\', \'__delattr__\', \'__delitem__\', \'__dir__\', \'__doc__\', \'__eq__\', \'__format__\', \'__ge__\', \'__getattribute__\', \'__getitem__\', \'__gt__\', \'__hash__\', \'__iadd__\', \'__imul__\', \'__init__\', \'__init_subclass__\', \'__iter__\', \'__le__\', \'__len__\', \'__lt__\', \'__mul__\', \'__ne__\', \'__new__\', \'__reduce__\', \'__reduce_ex__\', \'__repr__\', \'__reversed__\', \'__rmul__\', \'__setattr__\', \'__setitem__\', \'__sizeof__\', \'__str__\', \'__subclasshook__\', \'append\', \'clear\', \'copy\', \'count\', \'extend\', \'index\', \'insert\', \'pop\', \'remove\', \'reverse\', \'sort\']
可以看出,列表有11个内置方法。
1 append()、extend()、insert()方法
2 clear()、remove()、pop()方法
3 count()、index()方法
4 sort()、reverse()方法
5 copy()方法
1 append()、extend()、insert()方法
list.append(obj)
obj – 表示到添加到列表末尾的数据,它可以是单个元素,也可以是列表、元组等。
在列表的末尾追加元素。
Python学习交流Q群:906715085### list1 = [\'Python\', \'C++\', \'Java\'] # 追加元素 list1.append(\'PHP\') print(list1) #追加元组,整个元组被当成一个元素 t = (\'JavaScript\', \'C#\', \'Go\') list1.append(t) print(list1) #追加列表,整个列表被当成一个元素 list1.append([\'Ruby\', \'SQL\']) print(list1)
[\'Python\', \'C++\', \'Java\', \'PHP\'] [\'Python\', \'C++\', \'Java\', \'PHP\', (\'JavaScript\', \'C#\', \'Go\')] [\'Python\', \'C++\', \'Java\', \'PHP\', (\'JavaScript\', \'C#\', \'Go\'), [\'Ruby\', \'SQL\']]
list.extend(seq)
seq – 元素列表,可以是列表、元组、集合、字典,若为字典,则仅会将键(key)作为元素依次添加至原列表的末尾。
在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)。
extend() 和 append() 的不同之处在于:extend() 不会把列表或元组视为一个整体,而是把它们包含的元素逐个添加到列表中。
Python学习交流Q群:906715085### list2 = [\'Python\', \'C++\', \'Java\'] # 追加元素 list2.extend(\'C\') print(list2) # 追加元组,元祖被拆分成多个元素 t = (\'JavaScript\', \'C#\', \'Go\') list2.extend(t) print(list2) # 追加列表,列表被拆分成多个元素 list2.extend([\'Ruby\', \'SQL\']) print(list2)
[\'Python\', \'C++\', \'Java\', \'C\'] [\'Python\', \'C++\', \'Java\', \'C\', \'JavaScript\', \'C#\', \'Go\'] [\'Python\', \'C++\', \'Java\', \'C\', \'JavaScript\', \'C#\', \'Go\', \'Ruby\', \'SQL\']
list.insert(index, obj)
index – 对象obj需要插入的索引位置。
obj – 要插入列表中的对象。
将指定对象插入列表的指定位置。
list3 = [\'Google\', \'Runoob\', \'Taobao\'] list3.insert(1, \'Baidu\') print (\'列表插入元素后为 : \', list3) 列表插入元素后为 : [\'Google\', \'Baidu\', \'Runoob\', \'Taobao\']
2 clear()、remove()、pop()方法
list.clear()
清空列表,类似于del a[:]。
list1 = [\'Google\', \'Runoob\', \'Taobao\', \'Baidu\'] list2 = [\'Google\', \'Runoob\', \'Taobao\', \'Baidu\'] list1.clear() del list2[:] print(\"列表清空后的list1: \", list1) print(\"列表清空后的list2: \", list2) 列表清空后的list1: [] 列表清空后的list2: [] list.remove(obj)
移除列表中某个值的第一个匹配项。
list1 = [\'Google\', \'Baidu\', \'Runoob\', \'Taobao\', \'Baidu\'] list1.remove(\'Taobao\') print (\"列表现在为 : \", list1) list1.remove(\'Baidu\') print (\"列表现在为 : \", list1) 列表现在为 : [\'Google\', \'Baidu\', \'Runoob\', \'Baidu\'] 列表现在为 : [\'Google\', \'Runoob\', \'Baidu\'] list.pop([index=-1])
index – 可选参数,要移除列表元素的索引值,不能超过列表总长度,默认为 index=-1,删除最后一个列表值。
移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。
list1 = [\'Google\', \'Runoob\', \'Taobao\'] print(list1.pop()) print (\"列表现在为 : \", list1, end=\"\\n\\n\") print(list1.pop(0)) print (\"列表现在为 : \", list1) Taobao 列表现在为 : [\'Google\', \'Runoob\'] Google 列表现在为 : [\'Runoob\']
3 count()、index()方法
list.count(obj)
统计某个元素在列表中出现的次数。
aList = [123, \'Google\', \'Runoob\', \'Taobao\', 123]; print (\"123 元素个数 : \", aList.count(123)) print (\"Runoob 元素个数 : \", aList.count(\'Runoob\')) 123 元素个数 : 2 Runoob 元素个数 : 1 list.index(x[, start[, end]])
start -- 可选,查找的起始位置。
end -- 可选,查找的结束位置。
从列表中找出某个值第一个匹配项的索引位置,如果没有找到对象则抛出异常。
list1 = [\'Google\', \'Runoob\', \'Taobao\', \'Runoob\', \'QQ\'] print (\'Runoob 索引值为\', list1.index(\'Runoob\')) print (\'Runoob 索引值为\', list1.index(\'Runoob\',2,4)) Runoob 索引值为 1 Runoob 索引值为 3
4 sort()、reverse()方法
list.sort( key=None, reverse=False)
key -- 指定在进行比较前要在每个列表元素上调用的函数(或其他可调用对象)。
reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。
aList = [\'Google\', \'Runoob\', \'Taobao\', \'Facebook\'] aList.sort() # 升序排列 print(\"List : \", aList) List : [\'Facebook\', \'Google\', \'Runoob\', \'Taobao\'] # 获取序列的第二个元素 def take_second(elem): return elem[1] # 列表 list1 = [(2, 2), (3, 4), (4, 1), (1, 3)] # 指定第二个元素,升序排列 list1.sort(key=take_second) # 输出类别 print(\'排序后的列表:\', list1) 排序后的列表:[(4, 1), (2, 2), (1, 3), (3, 4)]
对于排序,Python中还有一个 sorted() 内置函数。两者的区别在于,list.sort() 方法会直接修改原列表(并返回 None 以避免混
淆),而 sorted() 内置函数会返回一个新的排序后的列表。
student_tuples = [(\'john\', \'A\', 15),(\'jane\', \'B\', 12),(\'dave\', \'B\', 10)] new_tuples = sorted(student_tuples, key=lambda student: student[2]) # sort by age print(\"排序前:\",student_tuples) print(\"排序后:\",new_tuples) 排序前:[(\'john\', \'A\', 15), (\'jane\', \'B\', 12), (\'dave\', \'B\', 10)] 排序后:[(\'dave\', \'B\', 10), (\'jane\', \'B\', 12), (\'john\', \'A\', 15)] list.reverse()
对列表的元素进行反向排序。
list1 = [\'Google\', \'Runoob\', \'Taobao\', \'Baidu\'] list1.reverse() print (\"列表反向排序后: \", list1)
列表反向排序后: [\'Baidu\', \'Taobao\', \'Runoob\', \'Google\']
5 copy()方法
list.copy()
复制列表,类似于 a[:]。
注意:list.copy()方法所遵循的拷贝原理,是浅拷贝,也就是说,只拷贝父对象,不会拷贝对象内部的子对象。关于深拷贝和浅拷
贝的更多内容,参见
文末的延伸阅读[1]。
a = [1, 2, [3, 4], 5, 6] b = a.copy() a.append(7) a[2][1] = 10 print(\"a = \", a) print(\"b = \", b) a = [1, 2, [3, 10], 5, 6, 7] b = [1, 2, [3, 10], 5, 6]
可以看出,列表a中新增元素,对列表b没有影响;但是如果修改了a中的列表对象,同样也会影响到b。
来源:https://www.cnblogs.com/123456feng/p/16178845.html
本站部分图文来源于网络,如有侵权请联系删除。