列表的内置函数(增、删、改、查、合并、复制)

列表

        容器类:
            列表: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])    #取从02的值
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    #第一个中括号中代表的是内层列表在深层列表中的位置,第二个代表的是内层列表找那个的位置,所以这里就是修改611
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:深层列表的内层列表也是一个单独的空间,原列表与复制后的列表使用的地址是一样的
       (所以使用浅拷贝时在深层列表中如果修改内层列表的值,拷贝的值也会发生改变)
'''

你可能感兴趣的:(学习)