列表
容器类:
列表: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:深层列表的内层列表也是一个单独的空间,原列表与复制后的列表使用的地址是一样的
(所以使用浅拷贝时在深层列表中如果修改内层列表的值,拷贝的值也会发生改变)
'''