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

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

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

如:

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

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

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

 

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

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

stuname[0]='zhangxilu'

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

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

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

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!!!

 

这会是字典的使用方法


# users = {}#定义一个字典
# for line in f:
# name = line.split(":")#把f文件按每一行按“:”分隔成一个数组,即name(默认一行一个账户密码,多个还在研究当中)
# users[name[0]] = name[1].strip()#取name数组的第一个元素为key,第2个元素为value,把value值赋予key即可
# print(users)

 

posted @ 2018-08-30 23:13  白日依山尽的博客  阅读(164)  评论(0)    收藏  举报