列表list:打了激素的数组 数组是只能存储同一种数据类型的结构; 元组 tuple 数组: scores[43] = [12, 12.0, “hello”] 定义列表[](列表中可以包括int,float,str,元组,列表。。。) a = [1, 1.0, “westos”, (1,2,3,4), [1,2,3,4]] print a [1, 1.0, ‘westos’, (1, 2, 3, 4), [1, 2, 3, 4]] 定义元组()(元组中可以包括int,float,str,元组,列表。。。) t = (1, 1.0, “westos”, (1,2,3,4), [1,2,3,4]) print t (1, 1.0, ‘westos’, (1, 2, 3, 4), [1, 2, 3, 4]) 元组是不可变数据类型,不能修改元素; 列表是可变数据类型,可以修改元素; 分析列表的特性(与元组对比) 索引,切片,重复/连接,成员操作符 索引 正向索引 a[0] 反向索引 a[-1] 拿出列表最后一个元素, 最后一个元素是列表, 再拿出列表的第三个元素,如下 : a[-1][2] 切片 去掉列表的第一个元素 a[1:] 逆序显示 a[::-1] 重复, 连接 a * 2 不建议这样连接两个列表,后面有效率更高的方法 ; a+a1 成员操作符 print a print 13 in a print 13 not in a 列表的增删改查 增 allow_ip = [“172.25.254.1”,”172.25.254.3” ] 追加元素到列表的最后 allow_ip.append(“172.25.254.250”) [‘172.25.254.1’, ‘172.25.254.3’, ‘172.25.254.250’] 增加元素到列表的指定位置 allow_ip.insert(0, “192.168.1.253”) [‘192.168.1.253’, ‘172.25.254.1’, ‘172.25.254.4’] 增加多个元素到列表最后 allow_ip.extend([“172.25.254.45”]) [‘192.168.1.253’, ‘172.25.254.1’, ‘172.25.254.45’] 通过列表的索引,对列表某个索引值重新赋值; allow_ip[0] = “192.168.1.1” print allow_ip [‘192.168.1.1’, ‘172.25.254.1’, ‘172.25.254.3’, ‘172.25.254.26’, ‘172.25.254.250’, ‘172.25.254.45’, ‘172.25.56.21’] 查 buy = [“apple”, “computer”,”apple”] 统计某个元素在列表中出现的次数 ; buy.count(“apple”) 找到某个值在列表中的索引值 buy.index(“computer”) 删 删除列表中遇到的第一个 value 值; buy.remove(“apple”) 删除列表中第 i 个索引值; del buy[0] 删除除了第一个元素之外的其他索引值 del buy[1:] 删除列表对象 del buy 删除指定索引对应的值,默认是最后一个元素 ; li.pop() 删除列表的第一个索引 ; li.pop(0) 其他的排序及逆转 排序,如果说都是数字,按照数字大小排序 ; 是字母的话,按照 ASCII 码来排序; ** 如何查看对应的 ASCII 码 ? ord(‘a’) 排序 li.sort() 逆转; li[::-1] li.reverse() 列表练习 用户登录程序版本2: 用户名和密码分别保存在列表中; 用户登录时,判断该用户是否注册; 用户登录时,为防止黑客暴力破解, 仅有三次机会; 如果登录成功,显示登录成功(exit(), break). 知识点学习: python中特有的while….else…语句 如果满足while后面的语句,执行while循环的程序, 如果不满足,执行else里面的程序. 提示: 用户名和密码一一对应users = [“user1”, “user2”, “user3”] passwords = [“123”, “456”, “789”] 参考代码: 4 users = [‘user1’,’user2’,’user3’] 5 passwd = [‘123’,’456’,’789’] 6 trycount = 0 7 while trycount<3: 8 inname = raw_input(“name:”) 9 if not inname in users: 10 print “用户未注册” 11 break 12 inpasswd = raw_input(“passwd:”) 13 index = users.index(inname) 14 if inpasswd == passwd[index]: 15 print “登陆成功” 16 break 17 else: 18 print “登录失败” 19 trycount += 1 20 else: 21 print “超过三次” 列表构建栈和队列数据结构 栈 栈是先进后出(LIFO-first in last out); 类似于往箱子里面放书; 代码实现如下: (实际应用中这样太麻烦,将来会用类实现) 1 #!/usr/bin/env python 2 #coding:utf-8 3 4 stack = [] 5 info = ”’ 6 栈操作 7 1)入栈 8 2)出栈 9 3)栈长度 10 4)查看栈 11 5)退出 12 请输入你的选择:”’ 13 14 while True: 15 choice = raw_input(info).strip() 16 if choice == “1”: 17 print “入栈操作”.center(40,”*”) 18 value = raw_input(‘入栈元素:’) 19 stack.append(value) 20 print “元素%s入栈成功” %(value) 21 elif choice == “2”: 22 print “出栈操作”.center(40,”*”) 23 if not stack: 24 print “栈为空” 25 else: 26 item = stack.pop() 27 print “元素%s出栈成功” %(item) 28 elif choice == “3”: 29 print “%d” %(len(stack)) 30 elif choice == “4”: 31 print “查看栈元素”.center(40,”*”) 32 if not stack: 33 print “栈为空” 34 for i in stack: 35 print i, 36 else: 37 exit() 队列 队列是先进先出(FIFO): 类似于去餐厅买饭排队; “”“ queue = [1, 2,3] 队列操作 1). 入队:enQueue 2). 出队: 3). 查看队列 4). 退出 “”“ 代码同栈,只需更改如下即可: 26 item = queue.remove(queue[0]) 列表内置方法 cmp,min,max,zip, enumerate 卡号由 6 位组成, 前 3 位是 610 , 后面的依次是 001, 002, 1 #!/usr/bin/env python 2 #coding:utf-8 3 cardids = [] 4 for i in range(1,101): 5 a = “610%.3d” %(i) 6 cardids.append(a) 7 for i,j in enumerate(cardids): 8 if i%10 == 0: 9 print 10 print j, 11 else: 12 print j,