[day3]python之列表,元组,字典的一点碎碎念

最近继续学习了python的一些数据类型的基础知识,话不多说,进入正题:

list:列表,又名数组,是python中常用的数据类型之一,它可以作为一个方括号内的逗号分隔值出现,并且不限制数据类型,只要以逗号分隔开就好

如:

stuname = [1,"哈哈哈",3,"a",5,6] #元素
# 0 1 2 3 4 5 下标
#     -6 -5 -4 -3 -2 -1 索引

上述代码方括号内称为元素,每一个元素对应一个下标,下标又称为:索引,指针,值得注意的是他是从左至右是从0开始计数的,从右向左是从-1开始计数的

下面介绍对列表基本的操作,增,删,改,查操作;

增:增加列表的元素,可以用方法.append,.insert,他俩的区别就是append默认添加至列表的尾部,insert可以指定添加位置,list里的元素可以重复添加,不会去重;

stuname.append("嘿嘿嘿")#添加元素至尾部
stuname.insert(0,"dalu")#添加元素至指定位置
print(stuname)

删:删除列表元素,方式有三种:.pop,.remove,del关键字等,remove括号里要紧跟元素,pop,del需经过下标定义元素进行删除

stuname.pop(0)   #指定下标,删除哪个,不指定下标,默认删除最后一个
stuname.remove("a")#remove删除时必须填写元素,不填写会报错
del stuname[-1] #del删除时必须传下标,不传下标会报错
stuname.clear()

改:即对列表里的元素进行更改操作,用下标定位到元素,进行新的赋值即可

stuname[0]='zhangxilu'

查:如下,定义一个新的列表,我们可以对列表进行元素出现次数的计数,打印元素的下标,对元素进行反转,对列表进行排序(注意,排序只能针对number类型有效,其他会报错!!!

       对两列表进行合并等操作;

my_list=["小黑","小白",1,1,1.5]

print(my_list.count(1))#取元素1出现的次数
print(my_list.index(1))#取元素1的下标
print(my_list.reverse())#对列表进行反转
print(my_list)
nums=[1,0.2,0.5,1.3,8,3.0,2.2]
nums.sort(nums)#对列表进行排序
nums.extend(my_list)#对列表进行扩充
new_list=my_list+nums#对列表进行扩充,生成一个新的列表
print(new_list)

下面介绍关于列表的切片操作,即对列表元素进行花式取值操作;注意:切片时,都是用下标对元素进行定位;

l=list(range(1,101))#生成1--100的数字列表
print(l[2:8])#这里的数字指元素的下标,是指从第三个元素取值,取至第9个元素,注意:因切片操作时不包含后面的值的即顾头不顾尾,所以输出元素不包括9,输出列表为[3.4.5.6.7.8]
print(l[0:5])#从第一个元素取至第五个元素
print(l[:5])#当从头开始标开始取元素时(即从0下标开始取元素),0下标可以忽略不写,效果与上例相同
print(l[::2])#从头取到尾,代表所有元素,后面的2指步长,即隔两个元素取元素

下面介绍数组嵌套进行切片,如下包括1维数组,2维数组,多维数组

nums1=[1,2,3]
nums2=[1,2,3,[4,56]]
nums3=[1,2,3,4,5,["a","b","d","e",["一","二","三"]],["四","五"]]

定位多维数组的元素,就是层层剥离,找到目标元素即可,如,打印上述数组中的“三”元素

print(nums3[5][4][2])

或从左向右打印也可以,怎么方便怎么来,如下,输出的都是同一个元素

print(nums3[-2][-1][-1])

tuple:元组 可以理解为不可变的列表,因为他一旦被创建,其内容就不能改变了,不能进行增加和删除操作,用小括号()表示,对于他的操作只有简单的两种,.count,.index,

对他的元素出现次数计数,以及输出元素的下标,也可进行元组的扩充等操作

dictionary:字典字典是另一种可变容器模型,且可存储任意类型对象,字典中的每个键值对用冒号分隔,键值之间用逗号分隔,所有的键值对放在{}里如:

studens={"name":"zhangdalu",
"sex":"男",
"addr":"shenzhen",
"phone":"1222222"}

值得注意的是字典里的k--v是成对出现的,且key是不可变的,可以用数字,字符串,元组定义,且是唯一的,自带去重复性,value值可以不唯一,对应的我们也可以对字典里的元素进行增删改查操作

增:

studens["age"]=18
print(studens)

结果如下:

删:方法有两种 .pop或用关键字del都可以删除

studens.pop("age")或del students("age")
print("删除后的",studens)

结果如下:

改:即给key值赋予新的值即可

studens["name"]="lulu"
print(studens)

查:方式有两种,如下

print(studens["age"])

print(studens.get("age"))

上述代码的区别是,第一种字典里没有该key时,会报错,程序会中断,第二种get方式,会返回默认值,没有默认值就返回“none”;

字典里面打印key,value,可以用如下方式:

print(studens.keys())
print(studens.values())

这里插一个有意思的方法,如下

print(studens.setdefault("hahah",values))

他和students.get很相似,不同在于,当字典中不存在后续跟的keys时,会自行添加进去;值也可以自定义,没有值就返回“none”

当字典中存在后面跟的keys时,对应的values值不会赋予字典中

---------------------------分割线---------------------------

写了一个注册登录程序,这次的不同是,从文件中账号密码,注册时与文件进行对比,看用户是否存在,难点在于把文件内的字符串转化为列表或字典,然后取到代表用户名的值,进行对比

下面介绍列表的方式,字典还在研究中;

f = open("username.txt","a+")#打开uaername文件,读取里面的值
f.seek(0)#指针从头开始
users = []#定义一个用户list
pwd = []#定义一个密码列表;注册接口可以暂不考虑
for line in f:#对文件里的行进行循环(默认一行一个用户一个密码,一行多个账户密码的情况,还在研究)
username = line.split(",")[0]#每一行按照“,”进行分割分割为一个数组,取数组的第一个元素值(默认存的的是用户名)
users.append(username)#把取到得值放进新的列表users里
password = line.split(",")[1]#取第二个元素
pwd.append(password)#取到的元素放进pwd列表里
后面注册成功后需要把用户名写入文件中,如下:
f.write(username+',' + pwd+'\n')#把注册成功的用户名,密码写进文件里,以“,”分割,且自动换行
f.close()#关闭文件

后续会补充字典的方法,good night!!!



 

 




猜你喜欢

转载自www.cnblogs.com/dalu-cookie2/p/9556172.html