Python学习之==>数组(二)
1、切片
1 # 切片:是list取值的一种方式 2 nums = ['段佳琳','陈伟良','王占宇','李波','韶钢'] 3 print(nums[1:3]) # 顾头不顾尾,不包含后面下标的元素 4 print(nums[1:]) # 从某个下标开始取,取到末尾,末尾的下标可以省略不写 5 print(nums[:2]) # 从头开始取,取到后面某个下标结束(不包括该下标的元素),开头的下标可以不写 6 print(nums[:]) # 取所有的元素
切片操作同样适用于字符串,如下:
1 info = '你好,今天天气很好' 2 print(info[2:6:1]) 3 s = 'San Francisco' 4 print(s[0]) 5 print(s[::-1])
2、步长
1 # 步长,隔几个取一次 2 lis = list(range(1,21)) # 产生一个从1~20的一个数组 3 print(lis) 4 # 如果步长是正数,从左往右开始取值 5 print(lis[::2]) 6 print(lis[0:10:2]) 7 # 如果步长是负数,从右往左开始取值 8 print(lis[::-2]) # 步长,隔个几个取一次 9 print(lis[::-1]) # 反转list,产生了一个新的list,不会改变原来list的值,与reverse不同 10 print(lis) 11 # -1倒序,从下标为1的元素'2'从右往左取值,因结尾没有取值,所以取到下标为0的元素 12 print(lis[1::-1]) 13 # -1倒序,开头没有取值,所以默认从20往左取值,取到下标为18的元素‘19’,但不顾尾,所以19不取 14 print(lis[:18:-1])
3、list循环
1 # for循环在循环可迭代对象的时候,每次循环的是里面的每一个元素 2 lists = ['段佳琳','陈伟良','王占宇','李波','韶钢',[1,2,3,4]] 3 for name in lists: 4 print(name) 5 for name in lists: 6 if type(name) == list: # 判断变量的类型是否为list类型 7 for i in name: 8 print(i) 9 print(name) 10 11 # 字符串循环的是每一个字符,包括任何字母、符号及空格 12 words = 'marry,lily,joker' 13 for name in words: 14 print(name)
4、数组练习
1 # 统计出所有已交和未交作业的名字及人数 2 stus = [ 3 ['小明','未交'], 4 ['小白','已交'], ['小紫','已交'], 5 ['小红','未交'], ['小绿','未交'], 6 ['小黄','未交'], ['小黑','已交'] 7 ] 8 9 pass_list = [] #已交 10 fail_list = [] #未交 11 for stu in stus: 12 name = stu[0] 13 status = stu[1] 14 if status == '已交': 15 pass_list.append(name) 16 else: 17 fail_list.append(name) 18 print('已交作业的人为:%s,总共有%s人'%(pass_list,len(pass_list))) 19 print('未交作业的人为:%s,总共有%s人'%(fail_list,len(fail_list)))
5、元组
1 # 元组也是一个list,它和list的区别是:元组里面的元素无法修改 2 t = (1,2,3,4,5,6,7) 3 print(type(t)) #查看变量类型 4 print(t[:3]) #切片 5 print(t[1]) #下标取值 6 7 # 元组的元素是不能修改的,一般用于定义数据库连接等不能修改的数据,如下: 8 lists = ( 9 '192.168.0.1', 10 'root', 11 '123456', 12 '3306', 13 'niuhanyang') 14 15 # 如果元组里面只有一个元素,那么必须在这个元素后面加一个逗号 16 t = (1,2,3,4,5,6,7,2) 17 words=(1,) 18 words2=('abc',) 19 print(type(words)) 20 print(type(words2)) 21 print(t.index(2)) # 找到元组的下标,如果有多个相同的元素,返回的是第一个元素的下标 22 print(t.count(2)) # 找到元素的个数