列表操作

列表list:打了激素的数组

数组是只能存储同一种数据类型的结构;
元组 tuple
数组: scores[43] = [12, 12.0, “hello”]
定义列表[](列表中可以包括int,float,str,元组,列表。。。)
a = [1, 1.0, “westos”, (1,2,3,4), [1,2,3,4]]
[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])
(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
成员操作符

列表的增删改查

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”
[‘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,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值