python学习笔记(二)列表操作

列表及列表操作:

  列表是最常用的数据类型之一,列表也叫数组,列表定义,使用[]即可;列表里面可以再套列表,一个里面套一个列表,叫二维数组;一个里面套一个列表,里面的列表再套一个列表,这个叫三位数组,套几层就是几维,定义格式如下:

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 in 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))

小练习:

  注册:输入用户名,判断账号是否存在,若存在给出提示;若不存在,提示注册成功;

原文地址:https://www.cnblogs.com/wxcx/p/8099667.html