python-基础篇-字符串、列表、元祖、字典-列表

文章目录

2.3.2列表

2.3.2.1列表介绍

可以理解为java、c语言中的数组。只是python中可以存放不同的数据类型。

列表就是一个变量存储多个值。

2.3.2.1.1列表的格式

变量A的类型为列表

namesList = ['xiaoWang','xiaoZhang','xiaoHua']

比C语言的数组强大的地方在于列表中的元素可以是不同类型的

testList = [1, 'a']

2.3.2.1.2打印列表
python 复制代码
    namesList = ['xiaoWang','xiaoZhang','xiaoHua']
    print(namesList[0])
    print(namesList[1])
    print(namesList[2])
结果:
    xiaoWang
    xiaoZhang
    xiaoHua
2.3.2.2列表的增删改查
2.3.2.2.1列表的遍历
2.3.2.2.1.1使用for循环

为了更有效率的输出列表的每个数据,可以使用循环来完成

python 复制代码
    namesList = ['xiaoWang','xiaoZhang','xiaoHua']
    for name in namesList:
        print(name)
结果:
    xiaoWang
    xiaoZhang
    xiaoHua
2.3.2.2.1.2使用while循环

为了更有效率的输出列表的每个数据,可以使用循环来完成

python 复制代码
    namesList = ['xiaoWang','xiaoZhang','xiaoHua']

    length = len(namesList)

    i = 0

    while i<length:
        print(namesList[i])
        i+=1
结果:
    xiaoWang
    xiaoZhang
    xiaoHua
2.3.2.2.2添加元素("增"append, extend, insert)
2.3.2.2.2.1append

通过append可以向列表添加元素(在列表后面追加)

python 复制代码
# Author:csz
# 定义变量A,默认有3个元素
names = ['老王', '老李', '老刘']

print("-----添加之前,列表A的数据-----")
for tempName in names:
    print("\t%s"%tempName,end='')
print("")
# 提示、并添加元素
temp = input('请输入要添加的学生姓名:')
names.append(temp)

print("-----添加之后,列表A的数据-----")
for tempName in names:
    print("\t%s" % tempName, end='')

结果:

注意

None在python中为空值

2.3.2.2.2.2extend

通过extend可以将另一个集合中的元素逐一添加到列表中

python 复制代码
# Author:csz
# 定义变量A,默认有3个元素
names = ['老王', '老李', '老刘']

print("-----添加之前,列表A的数据-----")
for tempName in names:
    print("\t%s"%tempName,end='')
print("")
# 提示、并添加元素
temp = input('请输入要添加的学生姓名:')
names.insert(1,temp)
names.insert(0,temp)
print("-----添加之后,列表names的数据-----")
for tempName in names:
    print("\t%s" % tempName, end='')
print("")
temp = input('请输入要添加的学生姓名:')
names.insert(0,temp)
print("-----添加之后,列表names的数据-----")
for tempName in names:
    print("\t%s" % tempName, end='')

结果:

2.3.2.2.2.3extend

通过extend可以将另一个集合中的元素逐一添加到列表中.

与字符串一样,列表的拼接也可以用"+"实现。

2.3.2.2.3删除元素("删"del, pop, remove)

类比现实生活中,如果某位同学调班了,那么就应该把这个条走后的学生的姓名删除掉;在开发中经常会用到删除这种功能。

列表元素的常用删除方法有:

del:根据下标进行删除

pop:删除最后一个元素

remove:根据元素的值进行删除

2.3.2.2.3.1del
python 复制代码
movieName = ['加勒比海盗', '骇客帝国', '第一滴血', '指环王', '霍比特人', '速度与激情']

print('------删除之前------')
for tempName in movieName:
    print(tempName)

del movieName[2]

print('------删除之后------')
for tempName in movieName:
    print(tempName)
结果:
    ------删除之前------
    加勒比海盗
    骇客帝国
    第一滴血
    指环王
    霍比特人
    速度与激情
    ------删除之后------
    加勒比海盗
    骇客帝国
    指环王
    霍比特人
    速度与激情
2.3.2.2.3.2pop
python 复制代码
movieName = ['加勒比海盗', '骇客帝国', '第一滴血', '指环王', '霍比特人', '速度与激情']

print('------删除之前------')
for tempName in movieName:
    print(tempName)

movieName.pop()

print('------删除之后------')
for tempName in movieName:
    print(tempName)
结果:
------删除之前------
加勒比海盗
骇客帝国
第一滴血
指环王
霍比特人
速度与激情
------删除之后------
加勒比海盗
骇客帝国
第一滴血
指环王
霍比特人
2.3.2.2.3.3remove
python 复制代码
movieName = ['加勒比海盗', '指环王','骇客帝国', '第一滴血', '指环王', '霍比特人', '速度与激情']

print('------删除之前------')
for tempName in movieName:
    print(tempName)

movieName.remove('指环王')

print('------删除之后------')
for tempName in movieName:
    print(tempName)
结果:
------删除之前------
加勒比海盗
指环王
骇客帝国
第一滴血
指环王
霍比特人
速度与激情
------删除之后------
加勒比海盗
骇客帝国
第一滴血
指环王
霍比特人
速度与激情
2.3.2.2.4修改元素("改")

修改元素的时候,要通过下标来确定要修改的是哪个元素,然后才能进行修改

2.3.2.2.5查找元素("查"in, not in, index, count)

所谓的查找,就是看看指定的元素是否存在

2.3.2.2.5.1in, not in

python中查找的常用方法为:

in(存在),如果存在那么结果为true,否则为false

not in(不存在),如果不存在那么结果为true,否则false

python 复制代码
# 待查找的列表
nameList = ['xiaoWang', 'xiaoZhang', 'xiaoHua']

# 获取用户要查找的名字
findName = input('请输入要查找的姓名:')

# 查找是否存在
if findName in nameList:
    print('在字典中找到了相同的名字')
else:
    print('没有找到')

结果:

2.3.2.2.5.2index, count

index和count与字符串中的用法相同

python 复制代码
>>> a = ['a', 'b', 'c', 'a', 'b']
>>> a.index('a', 1, 3) # 注意是左闭右开区间
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 'a' is not in list
>>> a.index('a', 1, 4)
3
>>> a.count('b')
2
>>> a.count('d')
0
2.3.2.2.6排序(sort, reverse)

sort方法是将list按特定顺序重新排列,默认为由小到大,参数reverse=True可改为倒序,由大到小。

reverse方法是将list逆置。

python 复制代码
>>> a = [1, 4, 2, 3]
>>> a
[1, 4, 2, 3]
>>> a.reverse()
>>> a
[3, 2, 4, 1]
>>> a.sort()
>>> a
[1, 2, 3, 4]
>>> a.sort(reverse=True)
>>> a
[4, 3, 2, 1]
2.3.2.3列表的嵌套
2.3.2.3.1 1. 列表嵌套

类似while循环的嵌套,列表也是支持嵌套的

一个列表中的元素又是一个列表,那么这就是列表的嵌套

python 复制代码
    schoolNames = [['北京大学','清华大学'],
                    ['南开大学','天津大学','天津师范大学'],
                    ['山东大学','中国海洋大学']] 
2.3.2.3.2 2. 应用

一个学校,有3个办公室,现在有8位老师等待工位的分配,请编写程序,完成随机的分配

python 复制代码
#encoding=utf-8

import random

# 定义一个列表用来保存3个办公室
offices = [[],[],[]]

# 定义一个列表用来存储8位老师的名字
names = ['A','B','C','D','E','F','G','H']

i = 0
for name in names:
    index = random.randint(0,2)    
    offices[index].append(name)

i = 1
for tempNames in offices:
    print('办公室%d的人数为:%d'%(i,len(tempNames)))
    i+=1
    for name in tempNames:
        print("%s"%name,end='')
    print("\n")
    print("-"*20)

结果:

2.3.2.4列表应用
python 复制代码
# Author:csz
#打印功能提示区
print("="*50)
print("名字关系系统v8.6".center(30))
print("1. 添加一个新名字".center(30))
print("2. 删除一个名字".center(30))
print("3. 修改一个名字".center(30))
print("4. 查询一个名字".center(30))
print("5. 查询所有名字".center(30))
print("6. 退出")
print("="*50)

names = []

#编写功能执行区
while True:
    # 获取用户输入的功能选择
    num = int(input("请输入功能序号:"))
    if num==1:
        name = input("请输入需要添加的名字:")
        names.append(name)
        print(names)
    elif num==2:
        name = input("请输入需要删除的名字:")
        names.remove(name)
    elif num==3:
        name = input("请输入需要修改的名字:")
        name_update = input("请输入修改后的名字:")
        names_index = names.index(name)
        names[ names_index] = name_update
    elif num==4:
        name = input("请输入需要查询的名字的名字:")
        if name in names:
            print("找到了你要找的人!")
        else:
            print("查无此人!")
    elif num==5:
        for name in names:
            print("%s\t"%name,end="")
        print("")
    elif num==6:
        break
    else:
        print("您输入有误,请重新输入!")
结果:
==================================================
          名字关系系统v8.6          
          1. 添加一个新名字          
          2. 删除一个名字           
          3. 修改一个名字           
          4. 查询一个名字           
          5. 查询所有名字           
6. 退出
==================================================
请输入功能序号:1
请输入需要添加的名字:qq
['qq']
请输入功能序号:1
请输入需要添加的名字:ww
['qq', 'ww']
请输入功能序号:1
请输入需要添加的名字:ee
['qq', 'ww', 'ee']
请输入功能序号:3
请输入需要修改的名字:ee
请输入修改后的名字:rr
请输入功能序号:5
qq	ww	rr	
请输入功能序号:6
相关推荐
zquwei9 分钟前
SpringCloudGateway+Nacos注册与转发Netty+WebSocket
java·网络·分布式·后端·websocket·网络协议·spring
Aimin202223 分钟前
路由器做WPAD、VPN、透明代理中之间一个
网络
群联云防护小杜44 分钟前
如何给负载均衡平台做好安全防御
运维·服务器·网络·网络协议·安全·负载均衡
爱码小白1 小时前
网络编程(王铭东老师)笔记
服务器·网络·笔记
蜜獾云1 小时前
linux firewalld 命令详解
linux·运维·服务器·网络·windows·网络安全·firewalld
柒烨带你飞2 小时前
路由器转发数据报的封装过程
网络·智能路由器
唐宋元明清21882 小时前
Windows 记录开机后应用启动慢的问题
windows·系统异常
黄公子学安全2 小时前
Java的基础概念(一)
java·开发语言·python
东方隐侠安全团队-千里2 小时前
网安瞭望台第17期:Rockstar 2FA 故障催生 FlowerStorm 钓鱼即服务扩张现象剖析
网络·chrome·web安全
程序员一诺3 小时前
【Python使用】嘿马python高级进阶全体系教程第10篇:静态Web服务器-返回固定页面数据,1. 开发自己的静态Web服务器【附代码文档】
后端·python