一、列表简介:
序列是Python中最基本的数据结构。序列中的每个元素都索引,第一个索引是0,
以逗号作为分割符。
二、列表的方法:
0、创建列表: names = ['a','b','c','d'] 1、追加:names.append() >>> names.append('e') >>> names ['a', 'b', 'c', 'd', 'e'] 2、删除:pop,remove,del 1)pop() >>> names.pop() 'e' 如果没有指定下标,则默认会删除最后一个元素 >>> names.pop(2) 'c' 指定下标时,就会删除下标所对应的元素 2)remove() >>> names.remove('e') >>> names ['a', 'b', 'c', 'd'] 3)del >>> del names[4] >>> names ['a', 'b', 'c', 'd'] 3、查找元素所在位置:index() >>> names.index('c') 2 4、统计元素的次数:count() >>> names.append('d') >>> names.count('d') 2 5、反转:reverse() >>> names.reverse() >>> names ['d', 'c', 'b', 'a'] 6、清空:clear() >>> names.clear() >>> names [] 7、插入:insert() >>> names.insert(2,'devilf') >>> names ['a', 'b', 'devilf', 'c', 'd'] 还有其他的插入方法: >>> names[3] = 'lebron' >>> names ['a', 'b', 'devilf', 'lebron', 'd'] 8、排序:sort()按照ascii码来进行排序 >>> names.insert(4,'&&') >>> names ['a', 'b', 'd', 'devilf', '&&', 'lebron'] >>> names.sort() >>> names ['&&', 'a', 'b', 'd', 'devilf', 'lebron'] 9、拼接两个列表:extend() >>> names.extend(place) >>> names ['&&', 'a', 'b', 'd', 'devilf', 'lebron', 'beijing', 'shandong', 'usa'] 10、对列表进行切片处理 1)列出所有的元素 >>> names[::] ['&&', 'a', 'b', 'd', 'devilf', 'lebron', 'beijing', 'shandong', 'usa'] 2)列出最后一个元素,从中间位置开始,列出后面所有的元素 >>> names[-1] 'usa' >>> a = int(len(names)/2) >>> names[a:] ['devilf', 'lebron', 'beijing', 'shandong', 'usa'] 11、复制:copy() >>> names.copy() ['&&', 'a', 'b', 'd', 'devilf', 'lebron', 'beijing', 'shandong', 'usa']
三、深浅复制
1.赋值:数据完全共享(= 赋值是在内存中指向同一个对象,如果是可变(mutable)类型,比如列表,修改其中一个,另一个必定改变 示例: l1 = [1,5,'for'] l2 = l1 l1.append('while') print(l2) 结果: [1, 5, 'for', 'while'] 2.浅复制:浅拷贝:数据半共享(复制其数据独立内存存放,但是只拷贝成功第一层) 示例: l1 = [1,'for',['funtion','while']] l2 =copy.copy(l1) print(l2) l2[2][1] = 'True' print(l1) 结果: [1, 'for', ['funtion', 'while']] [1, 'for', ['funtion', 'True']] 如上代码,l2浅拷贝了l1 ,之后l2把其列表中的列表的元素给修改,从结果看出,l1也被修改了。但是仅仅修改l1列表中的第一层元素,却并没有影响l2。 比较一下l2与l1的内存地址:False,说明,l2在内存中已经独立出一部分复制了l1的数据,但是只是浅拷贝,第二层的数据并没有拷贝成功,而是指向了l1中的第二层数据的内存地址,所以共享内存相当于等号赋值,所以就会有l2中第二层数据发生变化,l1中第二层数据也发生变化。 3.深拷贝:数据完全不共享(复制其数据完完全全放独立的一个内存,完全拷贝,数据不共享) 注:深拷贝就是完完全全复制了一份,且数据不会互相影响,因为内存不共享。
四、列表去重
方法一: 用内置函数set: list1 = [1, 2, 3, 3, 4, 4, 5, 6, 6, 6, 7, 8, 9] list2 = list(set(list1)) 方法二: 通过循环遍历 list1 = [1, 2, 3, 3, 4, 4, 5, 6, 6, 6, 7, 8, 9] list2=[] for i in list1: if not i in list2: list2.append(i
两种方法输出结果一致
[1, 2, 3, 4, 5, 6, 7, 8, 9]