Python 之列表及相关练习题

1.列表

列表是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目。

列表中的项目应该包括在方括号[ ]中,这样Python就知道你是指明一个列表。一旦你创建了一个列表,就可以添加、删除,或者是搜索列表中的项目。由于你可以增加或者删除项目,我们说列表是可变的数据类型,即这种类型是可以被改变的,且列表是可以嵌套的。

(1)创建列表

在这里插入图片描述

a = []     			##定义一个空列表
print(a)
[]

print(type(a))
<class 'list'>		##输出类型为列表

a = [1,2,3,4,5,6,7]
print(a)
[1, 2, 3, 4, 5, 6, 7]
  • 列表里可以存储不同的数据类型

      li = [1,1.2,'hello',True]
    
  • 列表嵌套

      li1 = [1,1.2,'hello',True,[1,2,3,4,5]]
    

(2)列表的特性

定义一个列表:

service = ['http','ssh','ftp','dns']
  • 索引

      print(service[0])		##索引列表的第一个元素
      print(service[-1])	##索引列表中的最后一个元素
    

在这里插入图片描述

  • 切片

      print(service[1:])		##输出列表中除了第一个元素的值
      print(service[:-1])		##输出列表中除了最后一个元素的值
      print(service[::-1])		##将列表的成员倒序输出
    

在这里插入图片描述

  • 重复

      print(service * 3)		##将列表里的所有成员输出三次
    

在这里插入图片描述

  • 连接

      service1 = ['mysql','firewalld']
      print(service + service1)
    

在这里插入图片描述

  • 成员操作符

      print('mysql' in service1)
      print('mysql'  not in service1)			##返回一个布尔值:Ture/False
    

在这里插入图片描述

  • 迭代

      for se in service:
      print(se)
    

在这里插入图片描述

  • 列表里嵌套列表

      service2 = [['http',80],['ssh',22],['ftp',21]]
    
  • 索引列表里的列表

      print(service2[0][1])
      print(service2[-1][1])
    
  • 对列表里的列表切片

      print(service2[:][1])
      print(service2[:-1][0])
      print(service2[0][:-1])
    

在这里插入图片描述

(3)添加列表元素

定义一个列表:

service = ['http','ssh','ftp','dns']
  • append:追加 追加一个元素到列表中

      service.append('firewalld')
    
  • extend:拉伸 追加多个元素到列表中

      service.extend(['mysql','firewalld'])
    
  • insert:在指定索引位置插入元素

      service.insert(1,'samba')
    

(4)删除列表元素

定义一个数组:

service = ['http','ssh','ftp','dns']
  • pop:该方法默认弹出列表的最后一个元素;这个方法还可以灵活运用,当为它加上一个索引值作为默认参数的时候,它会弹出这个索引值对应的元素

      service.pop()
      service.pop(2)
    

在这里插入图片描述

  • remove:使用该方法删除元素,你并不需要知道这个元素在列表中的具体位置,只需要知道该元素存在列表中就可以了。如果要删除的东西根本不在列表中,程序就会报错

      service.remove('ssh')
    

在这里插入图片描述

  • del:注意,del是一个语句,不是一个列表的方法,所以不必在它后面加上小括号()。如果你想删除整个列表,还可以直接用del加列表名删除(从内存中删除列表)

在这里插入图片描述

(5)列表的修改

  • 方法一:通过索引,重新赋值

      service[0] = 'mysql'
      print(service)
    

在这里插入图片描述

  • 方法二:通过切片进行修改

      print(service[:2])
      service[:2] = ['samba','nfs']
      print(service)
    

在这里插入图片描述

(6)列表的查看

  • 查看指定元素出现的次数

      service = ['ftp','ssh','ftp','dns']
      print(service.count('ftp'))
      print(service.count('dns'))
    

在这里插入图片描述

  • 查看指定元素的索引值(可以指定索引范围查看)

      print(service.index('ssh'))
      print(service.index('ftp',1,4))
    

在这里插入图片描述

(7)列表元素的排序

创建以下列表:

s =  [1,3,5,7,9,2,4,6,8]

观察两种排序方法的区别:

在这里插入图片描述

在这里插入图片描述

  • 将原有的列表顺序打乱

在这里插入图片描述

2.列表相关练习题

练习题1:

在这里插入图片描述

  • 代码演示

      users = ['root','westos']
      passwords = ['123','456']
    
      #尝试登录次数
      trycount = 0
    
      while trycount < 3:
      	inuser = input('用户名: ')
      	inpassword = input('密码: ')
    
      	trycount += 1
    
      	if inuser in users:
      		index = users.index(inuser)
      		password = passwords[index]
    
      		if inpassword == password:
         			print('%s登录成功' %(inuser))
          		break
      		else:
          		print('%s登录失败 : 密码错误' %inuser)
      	else:
      		print('用户%s不存在' %inuser)
      else:
      	print('尝试超过三次,请稍后再试')
    

练习题2:

在这里插入图片描述

adminname = 'admin'
adminpasswd = 'admin'
users = ['root','westos']
passwds = ['123','456']
print('管理员登陆'.center(50,'*'))

for i in range(3):
	uname = input('Username= ')
	upasswd = input('Password= ')
	if uname == adminname and upasswd == adminpasswd:
    	print('登陆成功'.center(50,'*'))
    	while True:
        	print('管理目录'.center(50, '*'))
        	print("""
            		1.添加会员信息
           			2.删除会员信息
            		3.查看会员信息
            		4.退出
        		""")
        	choice = input('请输入您的选择: ')
        	if choice  == '1':
            	print('添加会员信息'.center(50, '*'))
            	aname = input('添加帐号: ')
            	if aname in users:
                	print('用户%s已经存在' %(aname))
            	else:
                	apasswd = input('添加密码: ')
                	users.append(aname)
                	passwds.append(apasswd)
                	print('用户%s添加成功' %(aname))
        	elif choice == '2':
            	print('删除会员信息'.center(50, '*'))
            	dname = input('删除帐号: ')
            	if dname in users:
                	num = users.index(dname)
                	dpasswd =passwds[num]
                	users.remove(dname)
                	passwds.remove(dpasswd)
                	print('用户%s删除成功' %(dname))
            	else:
                	print('用户%s不存在' %(dname))
        	elif choice == '3':
            	print('查看会员信息'.center(50, '*'))
            	print('\t用户名\t密码')
            	usercount = len(users)
            	for usernum in range(usercount):
                	print('\t%s \t%s' %(users[usernum],passwds[usernum]))
        	elif choice == '4':
            	exit()
        	else:
            	print('请输入正确的序号!!')
	else:
    	print('管理员登陆失败')
	i = i + 1
	j = 3 - i
	print('您剩余登陆次数为%s' %(j))
else:
	print('登陆失败,请您稍后再试')

练习题3:

写一段小程序模仿栈的工作原理

	入栈(先入后出,后入先出)
	出栈
	查看栈顶元素
	查看栈的长度
	判断栈是否为空
	退出程序

代码:

????

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值