-------------------------------列表增删改查-----------------------------------
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
li = ['散光','柱子','钢盔','发哥','asan'] '''增''' #列表最后面添加 li.append('峰哥') #选择在某个位置添加 li.insert(1,'小明') #迭代添加,也是添加到最后。下面例子分别把二和哥添加到列表中 li.extend('二哥') #删, 按照索引删除,pop有返回值,是其删除的元素, li.pop(1) #索引里什么都不写,默认删除最后一个 #按照元素删除 li.remove('asan') #清空列表 #li.clear() #删除这个列表 #del li #切片删除,例如删除前三个。 #del li[0:3] #改 1.找到这个位置,直接改。 li[0] = 'sanguang' #切片修改,后面修改内容随便填写,会迭代的改。如下例子。 li[0:2]= '二哥云姐' #查 方式1.for循环 #查 方式2,切片 print(li[0:2]) #公共方法: #列表长度 L = len(li) #某个元素出现次数 i = li.count('哥') print(i) #找到元素索引,如果没有则报错 print(li.index('钢盔')) print(li) #列表排序.sort默认正序排序从小到大。 ls = [1,4,3,66,32] #ls.sort() ls.sort(reverse=True)#倒序,从大到小 #f反转 print(ls) ls.reverse() print(ls)
#------------------------------------列表---------------------------------------
names = ['a','b','c','d']
#-------------------------------------列表插入数据俩种方式:-----------------------
names.append('f')
print('append添加f',names)
#数据结果: append添加f ['a', 'b', 'c', 'd', 'f']
names.insert(1,'g')
print('insert指定位置添加g',names)
#输出结果['a', 'g', 'b', 'c', 'd', 'f']
#---------------------------------------列表改值---------------------------------
names[2] = 'r'
print('列表第三个数据修改为r:',names)
#输出结果: 列表第三个数据修改为r: ['a', 'g', 'r', 'c', 'd', 'f']
#----------------------------------------删除--------------------------
names.remove('r')
print('删除r后的数组',names)
#输出结果:删除r后的数组 ['a', 'g', 'c', 'd', 'f']
del names[1]
print('删除列表第二个数据',names)
#输出结果:删除列表第二个数据 ['a', 'c', 'd', 'f']
# 该方法输入下标。默认删除最后一个,输入下标等同于del 方法。
names.pop()
print('默认删除最后一个数据',names)
#输出结果:默认删除最后一个数据 ['a', 'c', 'd']
#--------------------------------------查找数据在列表中的位置-----------------
names.index('c')
# names.count('')查找列表中相同元素有几个。
#----------------------------------列表的浅copy和深copy------------------
#想要完全复制,引入模块,import copy 用copy.deepcopy方法
import copy
names = ['a','b',['h','l'],'d','e']
name3 = names.copy()
#想要完全复制,引入模块,import copy 用copy.deepcopy方法
name4 = copy.deepcopy(names)
names[1] = 'wang'
print('names = ',names)
print('浅name3 = ',name3)
print('深copyname4 = ',name4)
# 输出结果如下:
names = ['a', 'wang', ['h', 'l'], 'd', 'e']
浅name3 = ['a', 'b', ['h', 'l'], 'd', 'e']
深copyname4 = ['a', 'b', ['h', 'l'], 'd', 'e']
由此可见,俩种拷贝方式,都不会因为列表names的第一层数据改变而改变
改变names列表里嵌套的列表内容
names[2][0] ='H'
print('names = ',names)
print('浅name3 = ',name3)
print('深copyname4 = ',name4)
#输出结果如下
names = ['a', 'wang', ['H', 'l'], 'd', 'e']
浅name3 = ['a', 'b', ['H', 'l'], 'd', 'e']
深copyname4 = ['a', 'b', ['h', 'l'], 'd', 'e']
由此可见,name3列表会跟随names列表发生变化,name4不会,因为copy是浅copy,
name3只copy了names列表的第一层,其中嵌套的列表没有拷贝,names修改其中内容时,
name3也会随着改变,深拷贝是完全copy,不会因names的变化发生变化
浅copy只是引用数据
# ----------------------------------------------列表切片------------------
names = ['a','b','c','d']
print('切片1:3结果',names[1:3])
# 输出结果 ['b', 'c']
print('切片0:3结果',names[0:3])
#输出结果:切片0:3结果 ['a', 'b', 'c']
#创建一个列表
L = list(range(100))
print("取前10", L[: 10])
#输出结果:取前10 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print("80--90之间", L[-20:-10])
#输出结果:80--90之间 [80, 81, 82, 83, 84, 85, 86, 87, 88, 89]
print("80---90之间", L[80:90])
#输出结果:80---90之间 [80, 81, 82, 83, 84, 85, 86, 87, 88, 89]
print("前10个数,每俩个取一个", L[:10:2])
#输出结果:前10个数,每俩个取一个 [0, 2, 4, 6, 8]
print("所有数,每5个取一个", L[::5])
#输出结果:所有数,每5个取一个 [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]
#生成器
Listd = [x * x for x in range(1, 11)]
print(Listd) #输出结果:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
# ------------运用列表生成式去掉列表中的非字符串类型,并把字符串首字母换成小写---------------------
listlx = ["Hello", "World", 18, "Apple"]
xlist = [x.lower() for x in listlx if isinstance(x, str) == True]
print(xlist)
#输出结果:['hello', 'world', 'apple']
---------------------------------------------------元组tuple------------------------------------------------
元祖也是一组数据,可以看成只读列表,只要一旦创建,便不能再修改,只有count和index俩个方法,
--------------------------------------------元组和列表的补充---------------------------------------------------
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
列表的嵌套 li = ['taibai','武藤兰','陈浩',['bill','柱子',89],23] #输出藤 str = li[1] n = str[1] print(n) # taibai T 大写 str1 = li[0] name = str1.capitalize() li[0] = name print(li) #找到陈浩,改成陈日天,放回去 tname = li[2] li[2]=tname.replace('浩','日天') print(li) #列表转换成字符串, jion lb = ['taibai','武藤兰','陈浩bill','柱子'] ss = ''.join(lb) print('ss的内容是',ss) #str 转换成 列表 用split() xlist = ss.split() print(xlist) #元祖 ---只读列表,可循环,可切片 # 儿子不能改,孙子可以改.例如,可修改列表中的zhuzi首字母大写,或者添加对象 tu = (1,2,3,'sanguang',[2,3,4,'zhuzi'],'egon') tu[4][3] = tu[4][3].capitalize() tu[4][3] = 'sb' print(tu) #输出 3-9 # for i in range(3,10): # print(i) # #输出0-9 # for i in range(10): # print(i) #输出 3的倍数 for i in range(0,10,3): print(i) #倒序输出 for i in range(10,0,-2): print(i) #循环输出列表内容,遇到列表也输出其中的内容 listd = [1,2,3,4,'ale',['sanguang','钢盔','发哥'],'zhuzi'] for i in listd: if type(i).__name__ =='list': for n in i: print(n) else: print(i)