首页 > 代码库 > python-day2-笔记一、列表介绍及各项功能使用

python-day2-笔记一、列表介绍及各项功能使用

python 列表使用增删改查各项功能

定义列表

names = ["a","b","c","d","e","f","g"]   #给列表赋值,用中括号【】表示列表,无内容时为空,打印结果就是【】

print(names)                                    #打印输出结果:[‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘, ‘g‘]

 

根据列表的下标号去取得表中的数值,所取数值在列表中所处第几位就是其下标号,计算机第一位从0开始计算,从左向右数

在列表中取值也叫   “切片”

print(names[0])                      #利用下标号取第一位置数值,输出结果:a

print(names[0],names[2])       #利用下标号取第一,三位置数值,输出结果:a c

print(names[0:4])                   #利用下标号取第一到第四位置前四个数值,输出结果:a b c d,取数值顾头不顾尾,所以取0123位置数值,下标4第五位置数值忽略,所以这种办法无法取最后一位数值

print(names[-1])                     #利用下标号取最后一位置数值,方向从右向左数就为-1,输出结果:g

print(names[-3:])                    #利用下标号取最后三位数值,不知道具体个数情况下取最后三位只能用-3,-2,-1来代替,而计算机是从左向右数,所以书写为【-3:-1】,但因为其留头去尾特性会舍弃最后的-1位数值,所以改为【-3:】,输出结果:e f g

和上一句原理相同print(names[0:4]) 可以等价于print(names[:4])

向已有列表中追加数值

names.append("h")            #往列表中追加数值,默认从最后依次追加,并且每次只能追加一个数值

print(names)                     #输出结果:[‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘, ‘g‘, ‘h‘]

names.insert(1,"i")            #利用下标号把数值i插入第二位置,下标号为1

print(names)                    #输出结果:[‘a‘, ‘i‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘, ‘g‘]

names[1] = "j"                 #给固定位置数值重新赋值

print(names)                    #输出结果:[‘a‘, ‘j‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘, ‘g‘]

删除表中数值方法三种:

names.remove("b")         #直接用数值自身删除

print(names)                  #输出结果:[‘a‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘, ‘g‘]

del names[3]                  #利用下标号删除

print(names)                  #输出结果:[‘a‘, ‘b‘, ‘c‘, ‘e‘, ‘f‘, ‘g‘]

names.pop(5)                #不输入下标号默认删除最后一个位置,输入则删除对应位置数值 

print(names)                 #输出结果:[‘a‘, ‘b‘, ‘c‘, ‘e‘, ‘g‘, ‘h‘]

根据数值本身查询下标号

print(names.index("e"))   #上传数据本身查询下标号,输出结果: 4

print(names[names.index("e")])

统计列表中同名数值

names = ["a","b","c","d","e","f","g","d"]           #给列表赋值

print(names.count("d"))                                  #利用列表统计同名数值d,输出结果:2

列表清空

names.clear()                                                 #清空列表,之后打印输出结果为空[]

列表内数值排序反转

names.reverse()                                             #反转列表排序 print(names)    #输出结果:[‘d‘, ‘g‘, ‘f‘, ‘e‘, ‘d‘, ‘c‘, ‘b‘, ‘a‘]

列表数值依据优先级排序

names.sort()                                                  #将列表中数值依据ASCII码表里面首字母的优先级排序,特殊符号最优先,然后数字,然后大写字母,最后小写字母

列表扩展功能

names = ["a","b","c","d","e","f","g","d"]

names2 =[1,2,3,4,5]

names.extend(names2)                                   #扩展功能,把names2表中的内容增加到names中,且names2仍然会存在

print(names)   输出结果:[‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘, ‘g‘, ‘d‘, 1, 2, 3, 4, 5]

 列表浅复制

names = ["a","b","c","d","e",["A","B","C"],"f","g","d"]   #定义列表names,且第六位置下标5位另一张子列表

names2 = names.copy()                                     #定义列表names2,复制names

names[1] = "B"                                            #names下标1第二位置换成大写B 

names[5][0] = "a"                                         #names下标5第六位置子列表里下标0第一位置换成小写a

print(names)

print(names2)

输出结果:

[‘a‘, ‘B‘, ‘c‘, ‘d‘, ‘e‘, [‘a‘, ‘B‘, ‘C‘], ‘f‘, ‘g‘, ‘d‘]

[‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, [‘a‘, ‘B‘, ‘C‘], ‘f‘, ‘g‘, ‘d‘]

结论:names.copy()为浅复制,第一层数值完全复制,names得下标1位置改为大写B后,names2仍然保留为小写b 但是第二层子列表保存的不是数值,而是一个指针,指向内存中子列表存放位置,所以两张表中子列表变化完全一致, 即修改name2子列表中数值,names子列表也会随之改变

实现浅复制三种方式:

import copy person = [‘name‘,[‘a‘,100]]

p1 = copy.copy(person)

p2 = person[:]

p3 = list(person)

浅复制使用可以用于创建联合账号,如两张表第一层所属人不同,但子列表中数值可以同步变化

import copy

person = [‘name‘,[‘deposit‘,100]]     #姓名 (薪水,金额)

p1 = person[:]

p2 = person[:]

p1[0] = ‘xuejianing‘

p2[0] = ‘hexu‘

p2[1][1] = 50

print(p1)

print(p2)

得到输出结果:姓名不同,但是子列表里存款金完全同步

[‘xuejianing‘, [‘deposit‘, 50]]

[‘hexu‘, [‘deposit‘, 50]]

 

如果要完全复制需要引用库做强复制

import copy                                                                #引用模块

names = ["a","b","c","d","e",["A","B","C"],"f","g","d"]   #定义列表names,且第六位置下标5位另一张子列表

names2 = copy.deepy(names)                                     #强复制

这样names,names2就是两张完全独立的表,一般不建议这么做,类似linux中的硬链接文件

补充:列表间隔打印

names = ["a","b","c","d","e",["A","B","C"],"f","g","d"]

print(names[0:-1:2])                                                    #从第一个数自到最后一个数字,步长2,间隔打印

输出结果:[‘a‘, ‘c‘, ‘e‘, ‘f‘, ‘d‘] 该语句可简化为 print(names[::2])

 

元组tuple,也是一种列表,但是创建完成后就只能查询和切片,也叫只读列表

定义元组names = (‘a‘,‘b‘,‘c‘)

参数只有names.count和names.index

python-day2-笔记一、列表介绍及各项功能使用