列表及列表操作:
列表是最常用的数据类型之一,列表也叫数组,列表定义,使用[]即可;列表里面可以再套列表,一个里面套一个列表,叫二维数组;一个里面套一个列表,里面的列表再套一个列表,这个叫三位数组,套几层就是几维,定义格式如下:
1 list1 = [1,2,3,4]#一个普通的数组 2 list2 = [‘marry‘,‘lily‘,[50,‘money‘]]#二维数组 3 list3 = [‘name‘,‘sex‘,[‘lily‘,124,[‘aaaa‘,‘bbb‘]]]#三维数组
1 all_nums=[123,456,[789,10,11]] 2 three=[123,456,[789,10,11,[‘hahah‘,‘1234‘]]] 3 print(all_nums[2][1]) #10 4 print(three[2][-1][0]) #hahah
通过下列访问中的元素,下标从0开始计数,也就是说,比如一个列表,有5个元素,那么它第一个元素下标就是0,第二个就是1,以此类推,字符串也有下标,和列表一样,对列表的操作,分以下几种增,删,改,查
下标,角标,索引:
1 stus=[‘xiaohei‘,‘xiaobai‘,‘xiaohuang‘,‘xiaolan‘] 2 print(stus[1]) #‘xiaobai‘ 3 print(stus[-1]) #‘xiaolan‘ 最后一个元素下标可以写-1 4 print(stus[-2]) #‘xiaohuang‘
增加:
msg=‘你好‘ name=[‘andashu‘,‘cc‘,‘niuniu‘] name.append(msg)#在list末尾增加一个元素 name.insert(1,msg)#从指定位置插入,这个1代表下标 name.insert(10,msg)#如果指定下标不存在,那么就是在末尾添加 name.insert(-1,msg)#-1可以写,但是结果添加出来不对,所以一般不写 print(name)
修改:
1 msg=‘你好‘ 2 name=[‘andashu‘,‘cc‘,‘niuniu‘] 3 name[1]=‘baby‘#修改指定位置的值,直接取下标进行修改即可
查询:
1 msg=‘你好‘ 2 name=[‘andashu‘,‘cc‘,‘niuniu‘] 3 print(name[0])#获取第一个元素 4 print(name[-1])#-1代表最后一个元素
1 stus=[‘xiaohei‘,‘xiaobai‘,‘xiaohuang‘,‘xiaolan‘] 2 print(stus.count(‘xiaohei‘))#查看在list中某个元素的个数 3 print(stus.count(‘hahaha‘))#查看在list中某个元素的个数,如果该元素不存在,那么返回0 4 print(stus.index(‘xiaobai‘))#找到这个元素的下标,如果多个,返回第一个 5 print(stus.index(‘hahaha‘))#找到这个元素的下标;如果多个,返回第一个;如果找一个不存在的元素,会报错
删除:
1 msg=‘你好‘ 2 name=[‘andashu‘,‘cc‘,‘niuniu‘] 3 name.remove(‘cc‘)#删除指定的值 4 name.pop()#默认删除最后一个元素,如果指定下标,那么删除指定的元素 5 name.pop(2) 6 name.pop(100)#如果删除不存在的元素,那么报错 7 del name[0]#删除指定位置的值 8 name.clear()#清空列表
列表操作,一些内置的方法:
1 a=[1,2,3,4] 2 b=[5,6,7,8] 3 a.extend(b)#合并a,b两个列表 4 print(a)#[1,2,3,4,5,6,7,8] 5 print(b)#[5,6,7,8]只是把b列表里的内容合并到a中,b列表并不受影响 6 7 stus = [‘xiaohei‘,‘xiaobai‘,‘xiaohuang‘,‘cxdser‘,‘xiaohei‘] 8 stus.reverse()#反转list 9 print(stus)#[‘xiaohei‘, ‘cxdser‘, ‘xiaohuang‘, ‘xiaobai‘, ‘xiaohei‘] 10 11 12 nums = [9,31,345,12,457,2352,12143,2321] 13 nums.sort() 14 print(nums)#[9, 12, 31, 345, 457, 2321, 2352, 12143] 15 nums.sort(reverse=True) 16 print(nums)#[12143, 2352, 2321, 457, 345, 31, 12, 9] 17 #sort()排序,默认排序是升序,如果指定了reverse=True就是按照降序排
list循环:
如果直接for循环一个list的时候,那么每次循环的值都是这个list里面的元素
1 names=[‘haha‘,‘hehe‘,‘heihei‘] 2 for name in names: 3 print(name) # haha hehe heihei 4 5 6 index=0 7 for i in range(3): 8 print(names[index]) 9 index+=1 # haha hehe heihe
切片:
切片也就是另一种方式获取列表的值,它可以获取多个元素,可以理解为,从第几个元素开始,到第几个元素结束,获取他们之间的值,格式是name:[1:10],比如说要获取name的第一个元素到第五个元素,就可以用name[0:6],切片是不包含后面那个元素的值,记住顾头不顾尾;前面的下标如果是0的话,可以省略不写,这样写,name[:6],切片后面还有可以写一个参数,叫做步长,也就是隔多少个元素,取一次,默认可以不写,也就是隔一个取一次,切片操作也可以对字符串使用,和列表的用法一样,实例如下:
1 nums=[1,2,3,4,5,6,2,3,4,6,4,3,2,1,2,3,4] 2 print(nums[3:6])#[4,5,6] 3 print(nums[:6])#[1,2,3,4,5,6] 如果切片的前面一个值不写的话,从头开始数 4 print(nums[3:])#[4,5,6,2,3,4,6,4,3,2,1,2,3,4] 如果切片的后面一个值不写的话,取到末尾 5 print(nums[:])#如果切片的两个值都不写的话,从头取到尾 6 print(nums[::2])#步长为2,这个代表取所有的元素,然后每隔2个元素取一个 7 print(nums[::-1])#步长是正数的话从左往右取,步长是负数的话从右往左取,相当于倒序排列 8 print(nums[-1:-9:-1]) 9 print(nums[16:8:-1]) 10 #切片同样适用于字符串,字符串也有下标 11 title=‘今天发 苹果‘ #空格也算一个字符串 12 print(title[0]) #今 13 print(title[:4])#今天发 14 for t in title: 15 print(t)#今天发 苹果 16 for i,t enumerate(title):#enumerate可以同时循环索引下标和值 17 print(‘%s:%s‘%(i,t)) #0:今 1:天 2:发 3: 4:苹 5:果
18 #列表也适用enumerate:
names=[‘haha‘,‘hehe‘,‘heihei‘]
for index,name in enumerate(names):
print(‘%s:%s‘%(index,name))
小练习:
注册:输入用户名,判断账号是否存在,若存在给出提示;若不存在,提示注册成功;