关于list的增删查改操作,要注意
- 是否是在原列表做修改
- 是否有返回值
- 变量的引用
import pandas as pd
import numpy as np
d = [2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4,'a', 'a']
(1)列表的增
e=d # 变量e和d是同一个内存的引用,所以改变内存的值,则e和d都会变
d.append('a') # append函数是直接修改了原列表,内存中列表的值发生了改变
f=d.append('a') # append 函数没有返回值
print (d)
print (e)
print (f)
[2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 'a', 'a', 'a', 'a']
[2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 'a', 'a', 'a', 'a']
None
d.insert(1,'a') # 可以指定在某下标位置插入值,直接在原列表修改,无返回值
(2)列表的删
d.pop()
d.pop(3) # pop函数直接修改原列表,参数只能传元素下标,不能传元素的值; 如果不传参数,默认删除最后一个
n= d.pop() # pop 函数有返回值,即为被删除的元素值
print (d)
print (n)
[2, 3, 4, 3, 4, 2, 3, 4, 2, 3, 4, 'a', 'a']
a
d.remove('a') # remove函数直接修改原列表,智能传元素的值,同时只删除值的第一个匹配项
f=d.remove('a') # remove函数没有返回值
print (d)
print (f)
[2, 3, 4, 3, 4, 2, 3, 4, 2, 3, 4]
None
(3)列表的反转
e=d.reverse() # 直接在原list修改,没有返回值
print(d)
print (e)
[4, 3, 2, 4, 3, 2, 4, 3, 4, 3, 2]
None
(4) 列表的排序
- .sort()函数
- sorted()函数
num=[5,1,8,3,2] # 直接在原列表修改,没有返回值
num.sort()
num.sort(reverse=True) # 按逆序排序
print (num)
[8, 5, 3, 2, 1]
num=[5,1,8,3,2] # 会开辟新的空间存排序好的列表,不改变原列表,有返回值
n=sorted(num)
print (num)
print (n)
[5, 1, 8, 3, 2]
[1, 2, 3, 5, 8]
(5)列表的复制
- 由于列表变量的赋值,变量还是指向同一个内存。
- 所以要真正复制一个列表,则要用.copy()或者是切片
num=[5,1,8,3,2]
num1=num.copy() # 用copy函数复制,不会改变原列表
num2=num[:] # 用切片复制 ,不会改变原列表
num1.reverse()
num2.reverse()
print (num)
print (num1)
print (num2)
[5, 1, 8, 3, 2]
[2, 3, 8, 1, 5]
[2, 3, 8, 1, 5]
只有pop函数和sorted()函数有返回值
pop函数只能传元素下标值
(5) 其他
# list的加和乘操作
a = [2,3,4]
b = [5,6,7]
c= a+b
d=a*4 # 注意这是同一个引用复制了4次,所以,改变原引用的值,4个都会变
print(c)
print(d)
[2, 3, 4, 5, 6, 7]
[2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4]
d[1:2] # list切片是左闭右开
d[1:1] # 是一个空切片