列表
容器类: 列表:list #创建容器类型 curt = [] #创建空列表 curt1 = ['test1', 'test2', 'test3'] #创建有值的列表 print(curt1) #列表的特点:没有长度限制、可以放任意类型、支持下标索引、支持切片 创建 内容的访问 内置函数 增、删、改、查 增: append() 列表的末尾追加 extend() 列表的合并 insert() 将对象插入到index的位置,后面的也将后移 删: remove() pop() clear() del 列表[下标] del 列表 改、查: # idenx() 查找对象,如果存在返回对象的位置,不存在就报错 test = ['test1', 'test2', 'test3'] t = test.index('test1') #这里是通过index查找元素的位置 print(t) test[t] = 'haha' #x修改列表中的元素,根据元素的位置将元素修改 print(test)切片
#从列表中取值,取一个元素 print(curt1[2]) #2代表下标,下标从0开始 print(len(curt1)) #通过内置函数len查看列表长度 #队列:先进先出与列表一致, #列表切片同字符串的切片 print(curt1[:2]) #取从0到2的值 print(curt1[-1]) #取列表的最后一个值 print(curt1[::-1]) #逆序输出整个列表增
#向列表中追加元素 car_park = [] car_park.append('湘A0001') car_park.append('湘A0002') car_park.append('湘A0003') car_park.append('湘A0005') print(car_park) #每取一个打印一次 for i in car_park: print(i) #insert的使用(位置,元素),后面元素的位置将会后退 car_park.insert(3, '湘A0004') #3代表要去的位置 print(car_park) #extend()合并,将一个可迭代的对象添加到列表中(一次添加多个元素的时候使用) test1 = ['qq', 'ww', 'ee'] test2 = ['aa', 'ss', 'dd'] print(test1) print(test2) test1.extend(test2) print(test1)删
# remove删除元素:根据元素删除 #用法: remove() test = ['test1', 'test2', 'test3'] print(test) test.append('test1') #列表中运行存在相同的元素 print(test) test.remove('test1') #移除第一次出现的元素test1 print(test) print(test.remove('test6')) #当元素没找到在时会报错:ValueError: list.remove(x): x not in list # pop 删除元素:根据位置(下标)删除,不指定位置,删除列表的最后一个元素 test = ['test1', 'test2', 'test3'] #test.pop(2) #删除下标为2的元素 print(test) test.pop() #删除最后一个元素 print(test) # del 删除 test = ['test1', 'test2', 'test3'] del test[1] #系统删除列表中的元素 print(test) del test #删除列表,既清空内容也删除地址 #clear() 清空内容改
对列表的修改是通过元素在列表中的位置来进行修改的,只能修改单个元素 对普通列表的修改 list1 = [1, 2, 3, 4, 6,] list1 [4] = 5 #这里是修改下标为4的元素的值为5 print(list1) 对深层列表中元素的修改 s = [1, 2, [5, 6], 7] s [2][1] = 11 #第一个中括号中代表的是内层列表在深层列表中的位置,第二个代表的是内层列表找那个的位置,所以这里就是修改6为11 print(s)合并与拷贝
''' 合并 join: ''.join(列表) 把可迭代的合并成一个字符串 ''里面代表的是连接符 ,列表的类型不能是整型 t = [1, 2, 3, 4, 5, 6, 7] #print(''.join(t)) #当列表中的元素为整型时,就会报错 #TypeError: sequence item 0: expected str instance, int found t = str(t) print('-'.join(t)) import random qq = [] count = 0 while True: ran = random.randint(0, 9) if count == 0 and ran == 0: #这里是表示第一次得到的值为0时执行下面 continue #跳过本次循环 qq.append(str(ran)) #这里是将整型转为字符串,因为输入的为整形,不转字符类型会报错 count += 1 if count == 10: break #退出整个while循环 print(qq) print(''.join(qq)) #这里是通过join将‘’中的字符与后面的列表进行合并 拷贝 浅拷贝 copy: t = ['test1', 'test2', 'test3'] t_copy = t.copy() #将列表t进行一次copy print(t) print(t_copy) print(t is t_copy) #判断两个列表是否是一样的,是返回True,否则返回False print(id(t)) #查看列表的id(地址),通过id判断两个列表是否一致 print(id(t_copy)) #在这种copy时修改t种的元素,不会影响t_copy的值 ''' 深层列表的拷贝 t = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] #深层列表 print(len(t)) print(t[2][2]) #这是取列表中的位置为2的列表中位置为2的元素 t1 = t.copy() t[0][1] = 9 #修改列表t的位置为0的列表中位置为1的值为9 print(t) print(t1) #深层列表在修改了元素时,copy文件也会发生改变 总结: copy()是一个浅拷贝 浅拷贝:执行copy()动作,返回一个新的地址(存放内容同原来内容) 内容: 分类1:字符串,整型 两个列表使用同一个地址 分类2:深层列表的内层列表也是一个单独的空间,原列表与复制后的列表使用的地址是一样的 (所以使用浅拷贝时在深层列表中如果修改内层列表的值,拷贝的值也会发生改变) '''