Python列表操作与深浅拷贝(7)——列表深浅拷贝、删除、反转、排序

列表复制

浅拷贝:简单类型元素全复制,引用类型元素只复制引用

L1 = [3,2,1,[4,5,6],8,‘abc‘]
L1
[3, 2, 1, [4, 5, 6], 8, ‘abc‘]

L2 = L1.copy()
L2
[3, 2, 1, [4, 5, 6], 8, ‘abc‘]
L1[3][1] = 10        #修改L1中的元素L2也随之变化
L1
[3, 2, 1, [4, 10, 6], 8, ‘abc‘]
L2
[3, 2, 1, [4, 10, 6], 8, ‘abc‘]

深拷贝:copy模块提供了deepcopy,引用类型完全复制为新元素

import copy
L3 = copy.deepcopy(L1)
L3
[3, 2, 1, [4, 10, 6], 8, ‘abc‘]
L1[3][1] = 20
L1
[3, 2, 1, [4, 20, 6], 8, ‘abc‘]
L3        #L3为深拷贝新生成的列表,修改L1元素对L3无影响
[3, 2, 1, [4, 10, 6], 8, ‘abc‘]

*:对引用类型做浅拷贝处理

L4 = [[1,2,3]] * 3
L4
[[1, 2, 3], [1, 2, 3], [1, 2, 3]]

L4[1][1] = 10
L4
[[1, 10, 3], [1, 10, 3], [1, 10, 3]]
for x in L4:
    print(x)
    print(id(x))        #取内存地址
[1, 10, 3]
84289032
[1, 10, 3]
84289032
[1, 10, 3]
84289032        #内存地址相同
L5 = [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
L5
[[1, 2, 3], [1, 2, 3], [1, 2, 3]]

for x in L5:
    print(x)
    print(id(x))
[1, 2, 3]
87157000
[1, 2, 3]
84213512
[1, 2, 3]
87157128

列表删除元素

remove(value) 基于元素查找,移除第一个出现的元素,并会引起列表元素移动O(n)

L6 = [3,2,1,4,5,6,7,2,3,4]
L6
[3, 2, 1, 4, 5, 6, 7, 2, 3, 4]

L6.remove(2)
L6
[3, 1, 4, 5, 6, 7, 2, 3, 4]

L6.remove(10)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-31-8cf95df45268> in <module>
----> 1 L6.remove(10)

ValueError: list.remove(x): x not in list

pop(index) 基于索引查找,移除索引位元素O(1),并会引起列表元素移动O(n)

L6.pop(3)5
L6
[3, 1, 4, 6, 7, 2, 3, 4]

L6.pop(10)
L6
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-33-8663c8410c3d> in <module>
----> 1 L6.pop(10)
      2 L6

IndexError: pop index out of range

pop() 移除列表尾部一个元素O(1),效率高

L6.pop()4
L6
[3, 1, 4, 6, 7, 2, 3]

clear() 清除列表所有元素,使列表长度为0,元素引用计数减1,剩下一个空列表

L6.clear()
L6
[]

列表翻转

reverse() 将列表元素反转,修改自身

L7 = [3,2,1,4,5,6,7,2,3,4]
L7
[3, 2, 1, 4, 5, 6, 7, 2, 3, 4]

L7.reverse()
L7
[4, 3, 2, 7, 6, 5, 4, 1, 2, 3]

列表排序

sort(key=function,reverse=True) 对列表元素排序,默认升序,修改自身

key指定不同类型元素如何排序,只在排序中使用,不修改元素

reverse=True为降序排序

L8 = [3,2,1,4,5,6,7,2,3,4,‘a‘,‘b‘,‘c‘]
L8
[3, 2, 1, 4, 5, 6, 7, 2, 3, 4, ‘a‘, ‘b‘, ‘c‘]

L8.sort()
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-46-951f259be954> in <module>
----> 1 L8.sort()

TypeError: ‘<‘ not supported between instances of ‘str‘ and ‘int‘

L8.sort(key=str,reverse=True)
L8
[‘c‘, ‘b‘, ‘a‘, 7, 6, 5, 4, 4, 3, 3, 2, 2, 1]

判断元素存在

in 判断元素在列表中是否存在,返回bool值

‘c‘ in L8
True
4 in L8
True
10 in L8
False

原文地址:https://www.cnblogs.com/omgasw/p/11613085.html

时间: 2024-11-10 14:52:09

Python列表操作与深浅拷贝(7)——列表深浅拷贝、删除、反转、排序的相关文章

python列表操作:追加元素到列表的代码

将做工程过程中常用的内容做个收藏,如下的内容是关于python列表操作:追加元素到列表的内容. scores = ["1","2","3"] # add a score score = int(raw_input("What score did you get?: ")) scores.append(score) # list high-score table for score in scores: print score

python爬虫笔记_列表操作

列表是Python中最基本的数据结构,列表是最常用的Python数据类型,列表的数据项不需要具有相同的类型.列表中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推.Python有6个序列的内置类型,但最常见的是列表和元组.序列都可以进行的操作包括索引,切片,加,乘,检查成员.此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法. 一.创建一个列表只要把逗号分隔的不同的数据项使用方括号括起来即可.如下所示: list1 = ['physic

Python列表操作的函数和方法

http://www.jb51.net/article/47978.htm 列表的数据项不需要具有相同的类型.列表中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推.Python有6个序列的内置类型,但最常见的是列表和元组.序列都可以进行的操作包括索引,切片,加,乘,检查成员.此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法. Python列表操作的函数和方法列表操作包含以下函数:1.cmp(list1, list2):比较两个列表的

(10)列表操作

# 创建一个列表    只要把逗号分隔的不同的数据项使用方括号括起来即可.如下所示:    list1 = ['physics', 'chemistry', 1997, 2000];    list2 = [1, 2, 3, 4, 5 ];    list3 = ["a", "b", "c", "d"];    # 拷贝一个列表    x = [7,5,3]    y = x[:]    这样y才会产生副本,不能用y=x,这样

Python中的列表操作

Python的列表操作可谓是功能强大且方便(相对于Java)简单.常规的操作就不说了(这不是一个入门教程),介绍几个很有特点的例子 添加 # 追加到结尾(append) li = [1, 2, 3, 4, 5] li.append(6) print('li = %s' % li) # 输出:li = [1, 2, 3, 4, 5, 6] # 追加一个列表(extend) li2 = ['a', 'b', 'c', 'd', 'e'] li.extend(li2) print('li = %s'

【Python】Python中的列表操作

Python的列表操作可谓是功能强大且方便(相对于Java)简单.常规的操作就不说了(这不是一个入门教程),介绍几个很有特点的例子 添加 # 追加到结尾(append) li = [1, 2, 3, 4, 5] li.append(6) print('li = %s' % li) # 输出:li = [1, 2, 3, 4, 5, 6] # 追加一个列表(extend) li2 = ['a', 'b', 'c', 'd', 'e'] li.extend(li2) print('li = %s'

python 3 列表操作

创建列表subject = ["Liunx","python","web","java"] #读取列表 print(subject) #打印显示 ['Liunx', 'python', 'web', 'java'] #列表的切片,切片的索引是从0开始的 print(subject[0]) # 0 号索引,也就是列表的第一个元素 print(subject[1])   print(subject[2]) print(subjec

Python列表操作集合

对于python列表里元素的操作主要分为以下几个方面: 1.向列表里面加元素: 向python列表里面添加元素主要有三种方法: (1)append() append()对于列表的操作主要实现的是在特定的列表最后添加一个元素,并且只能一次添加一个元素,并且只能在列表最后: m.append(元素A) (2)extend() extend()对于列表的操作主要实现的是对于特定列表的扩展和增长,可以一次添加多个元素,不过也只能添加在列表的最后: m.extend([元素A,元素B,--]) (3)in

python列表操作大全

Python列表操作大全 对于python列表的理解可以和C语言里面的数组进行比较性的记忆与对照,它们比较相似,对于python里面列表的定义可以直接用方括号里加所包含对象的方法,并且python的列表是比较强大的,它包含了很多不同类型的数据:整型数字,浮点型,字符串以及对象等.定义举例如下: List1=[1,2,3,”hello world”,”3.1415926”,[1,2,3]] 对于python列表里元素的操作主要分为以下几个方面: 1. 向列表里面加元素: 2. 删减列表中的一些元素

python学习笔记——列表操作

python列表操作--增 append:追加一条数据到列表的最后 name = ["Zhangsan","XiongDa","Lisi"] name.append("wangwu") print name 输出结果: ['Zhangsan', 'XiongDa', 'Lisi', 'wangwu'] insert:指定位置插入一条数据 name = ["Zhangsan","XiongDa&qu