Python基础教程(列表(list))

本文深入讲解了Python中列表的基本概念、操作方法及其在栈和队列等数据结构中的应用,并通过示例演示了如何利用列表生成卡号和密码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

列表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

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值