列表list:打了激素的数组
1、定义列表
• 定义一个空列表
list = []
• 定义一个包含元素的列表,元素可以是任意类
型,包括数值类型,列表,字符串等均可。
元组和列表的区别:
(1)格式
Tuple()
List []
(2)# 元组是不可变数据类型,不能修改元素;
# 列表是可变数据类型,可以修改元素;2、列表的特性(与元组对比)
(1)、索引# 正向索引
# 反向索引
# 拿出列表最后一个元素, 最后一个元素是列表, 再拿出列表的第三个元素,如下 :
li[-1][0]
(2)、切片
# 取指定的列表元素# 去掉列表的第一个元素
# 逆序显示
(3)、重复, 连接
L* 2# 不建议这样连接两个列表,后面有效率更高的方法 ;
L1 + L2
in 列表
not in 列表
>> True
>> False
(5)、列表的增删改查
L.append "追加元素到列表的最后:"
L.insert "增加元素到列表的指定位置:"
L.extend "增加多个元素到列表最后:" (注意格式)
###########
# 目前学习的可迭代对象有 : str, list, tuple
##########
改 "通过列表的索引,对列表某个索引值重新赋值";
查
# 统计某个元素在列表中出现的次数 ;
# 找到某个值在列表中的索引值
删
# 删除列表中遇到的第一个 value 值;
L.remove("apple")
# 删除指定索引对应的值,默认是最后一个元素 ;
L.pop()
# 删除列表的第一个索引 ;
L.pop(0)
del L[0]
# 删除除了第一个元素之外的其他索引值
del L[1:]
# 删除列表对象
del L
(6)、排序及逆转
排序:
L.sort()
# 排序,如果说都是数字,按照数字大小排序 ;
# 是字母的话,按照 ASCII 码来排序;# 如何查看对应的 ASCII 码 ? ord('a')
ps : 将ascci码值转化为字符
chr( )
chr (ord(25))
逆转:
L[::-1]
L.reverse()3、列表内置函数
1 | cmp(list1, list2) 比较两个列表的元素 |
2 | len(list) 列表元素个数 |
3 | max(list) 返回列表元素最大值 |
4 | min(list) 返回列表元素最小值 |
5 | list(seq) 将元组转换为列表 |
列表练习
test1
用户名和密码分别保存在列表中;
用户登录时,判断该用户是否注册;
用户登录时,为防止黑客暴力破解, 仅有三次机会;
如果登录成功,显示登录成功(exit(), break).
知识点学习:
python中特有的while....else...语句
如果满足while后面的语句,执行while循环的程序, 如果不满足,执行else里面的程序.
提示: 用户名和密码一一对应
users = ["user1", "user2", "user3"]
passwords = ["123", "456", "789"]参考代码
# 存储用户名的列表;
users = ["user1", "user2", "user3"]
# 存储用户密码的列表;
passwds = ["123", "456", "789"]
trycount = 0
while trycount<3:
inname = raw_input("name:")
# 判断用户是否存在列表中;
if not inname in users:
print "用户未注册"
break
inpasswd = raw_input("password:")
# 找到用户在用户列表中的索引值,可以间接找到该用户对应的密码 ;
index = users.index(inname)
if inpasswd == passwds[index]:
print "登录成功!!"
break
print "ok"
else:
print "登录失败!!"
trycount += 1
else:
print "超过三次"
test 2、列表构建栈和队列数据结构
栈栈是先进后出(LIFO-first in last out);
类似于往箱子里面放书;
代码实现如下: (实际应用中这样太麻烦,将来会用类实现)In [ ]:
#!/usr/bin/env python
#coding:utf-8
stack = []
info = """
栈操作
1). 入栈
2). 出栈
3). 栈长度
4). 查看栈
5). 退出
请输入你的选择:"""
# 死循环
while True:
choice = raw_input(info).strip()
if choice == "1":
print "入栈操作".center(40, "*")
value = raw_input("请输入入栈元素:")
stack.append(value)
print "元素%s入栈成功..." %(value)
elif choice == "2":
print "出栈操作".center(40, "*")
# if len(stack) == 0:
if not stack:
print "栈为空"
else:
item = stack.pop()
print "元素%s出栈成功...." %(item)
elif choice == "3":
print "查看栈长度".center(40, "*")
print len(stack)
elif choice == "4":
print "查看栈元素".center(40, "*")
if not stack:
print "栈为空"
for i in stack:
print i,
elif choice == "5":
exit()
else:
print "请输入正确的选择......"
队列是先进先出(FIFO——first in first out):
类似于去餐厅买饭排队;
"""
queue = [1, 2,3]
队列操作
1). 入队:enQueue
2). 出队:
3). 查看队列
4). 退出
"""
test3
# 卡号由 6 位组成, 前 3 位是 610 , 后面的依次是 001, 002, 003...100