列表list:打了激素的数组
1.数组是只能存储同一种数据类型的结构;
数组是可变数据类型,可以修改元素
元组tuple可以存储不同类型的数据
元组是不可变数据类型,不能修改元素
2.列表可以使用索引(包括反向索引,与字符串使用方法类似):
list[1] 查看列表list中第2个元素的值,可以直接令它等于一个字符进行赋值。
list[1][2] 查看list列表第2个元素中字符串的第3个元素
3.切片(与字符串使用方法相同)
List[1:] 表示输出列表List除第一个元素外的其他元素
List[::-1] 表示逆序显示列表
4.重复链接
重复:list*2,将列表list重复两便
链接:list1+list2 注:不建议使用,后面有更好的方法
5.成员操作符
Str in List 判断Str是否在列表List中,在返回True,否则返回False
6.列表的增删改查
【1】增
List.append(“Str”)将字符Str追加到列表List的末尾。
List.insert(1,”Str”)将Str添加到列表索引为1的位置
List.extend([“Str2”,”Str1”])将Str1和Str2追加到列表最后
【2】改
List[1]=”Str”将列表索引为1的元素改为Str
【3】查
List.count(“Str”)查看Str在列表中出现的次数
List.index(“Str”)查看Str在列表中的索引
【4】删
List.remove(“Str”)将列表中Str元素删除
del List[0]将列表中索引为0的元素删除
del List[1:]删除除第一个元素外的所有元素
del List 删除列表
List.pop(0)删除指定索引对应的值,默认是最后一个
【5】排序
注:如果是字母按照数字大小排序,如果是字母按照ASCII码排序
注:查看ASSCII值ord(‘a’),查看ASCII对应的字符chr(98)
List.sort()从小到大排序
List.reverse() 从大到小排序
测试:登陆次数限制
#!/usr/bin python
#encoding:utf-8
#**************************************#
# Author :wang #
# Email :wang@qq.com #
# Version : #
# Create_Date:2017-12-29 21:16:03 #
# Description: #
# #
#**************************************#
print "#**************************************#"
print " 用户登录系统"
print "#**************************************#"
username = ["tom","jary","haha"]
password = ["123","456","789"]
def display():
print '''
【1】用户登陆
【2】用户注册
【3】用户注销
'''
select = input("请选择(1/2/3):")
return select
def denglu():
count = 0
user = raw_input("用户名:")
while count < 3:
paswd = raw_input("密 码:")
if user in username:
i = username.index(user)
if paswd == password[i]:
print "HELLO"
break
else:
count +=1
print "你已经登陆失败%d次,剩余%d次机会。"%(count,3-count)
else:
print "用户不存在!!!"
else:
print "out of time"
def zhuce():
while True:
user = raw_input("用户名:")
paswd1 = raw_input("设置密码:")
paswd2 = raw_input("请再次输入密码:")
if paswd2 == paswd1:
username.append(user)
password.append(paswd1)
print "注册成功"
break
else:
print "两次输入密码不一致,请重新输入"
def zhuxiao():
user1 = raw_input("请输入用户名:")
paswd1 = raw_input("请输入密码:")
select = raw_input("是否删除(y/n)?")
if select == "y":
index = username.index(user1)
del username[index]
del password[index]
print "注销成功".username.password
def main():
select = display()
while True:
if select == 1:
denglu()
elif select == 2:
zhuce()
elif select == 3:
zhuxiao()
elif select not in [1,2,3]:
print "选项无效,清重新选择!!!"
a = raw_input("是否继续(y/n)?")
if a == "n":
break
if __name__=="__main__":
main()
7.列表构建栈和队列数据结构
【1】栈
栈是先进后出(LIFO-first in last out);
类似于往箱子里面放书;
代码实现如下: (实际应用中这样太麻烦,将来会用类实现)
测试:代码实现
#!/usr/bin python
#encoding:utf-8
#**************************************#
# Author :wang #
# Email :wang@qq.com #
# Version : #
# Create_Date:2017-12-30 00:48:44 #
# Description: #
# #
#**************************************#
print "#**************************************#"
print " stack"
print "#**************************************#"
def display():
print """
【1】入栈
【2】出栈
【3】查看栈
【4】查看栈长度
【5】退出
"""
def in_stack(stack):#入栈
str1 = raw_input("Str:")
stack.append(str1)
print "入栈成功"
def out_stack(stack):#出栈
if not stack: #dui为空
print "栈为空"
else:
stack.pop()
print "出栈成功"
def watch_stack(stack):#查看栈
for v in stack:print v,
print
def len_stack(stack): #查看栈长度
print len(stack)
def main():
stack = ["test",]
display()
while True:
choose = int(raw_input("请选择:").strip())
if choose == 1:
in_stack(stack)
elif choose == 2:
out_stack(stack)
elif choose == 3:
watch_stack(stack)
elif choose == 4:
len_stack(stack)
elif choose == 5:
exit()
else:print "选择无效!!!!!"
if __name__=="__main__":
main()
【2】队列
队列是先进先出(FIFO):
类似于去餐厅买饭排队;
测试:代码实现
#!/usr/bin python
#encoding:utf-8
#**************************************#
# Author :wang #
# Email :wang@qq.com #
# Version : #
# Create_Date:2017-12-30 00:48:44 #
# Description: #
# #
#**************************************#
print "#**************************************#"
print " 队列"
print "#**************************************#"
def display():
print """
【1】入队
【2】出队
【3】查看队
【4】查看队长度
【5】退出
"""
def in_dui(dui): #入队
str1 = raw_input("Str:")
dui.append(str1)
print "入队成功"
def out_dui(dui): #出队
if not dui: #dui为空
print "队为空"
else:
del dui[1] #方法二dui.pop(0)
print "出队成功"
def watch_dui(dui):#查看队
for v in dui:print v,
print
def len_dui(dui):#查看队长度
print len(dui)
def main():
dui = ["test",]
display()
while True:
choose = int(raw_input("请选择:"))
if choose == 1:
in_dui(dui)
elif choose == 2:
out_dui(dui)
elif choose == 3:
watch_dui(dui)
elif choose == 4:
len_dui(dui)
elif choose == 5:
exit()
else:print "选择无效!!!!!"
if __name__=="__main__":
main()
8.列表内置方法
Cmp对列表进行比较
min, max,将列表中最大值或最小值显示
zip,将两个列表合并
enumerate枚举
测试:产生卡号和初始密码
#!/usr/bin python
#encoding:utf-8
#**************************************#
# Author :wang #
# Email :wang@qq.com #
# Version : #
# Create_Date:2017-12-30 01:56:05 #
# Description: #
# #
#**************************************#
print "#**************************************#"
print " 批量产生卡号"
print "#**************************************#"
head = "610"
test = []
for i in range(1,100):
test.append(head+"%.3d"%(i)) #产生610001、610002....610100
test={}.fromkeys(test,"0"*6)
count = 0
for i,v in enumerate(test):
print v+":"+test[v],
if i%4 == 0 : #每行显示4个数据
print