Python基础之列表

列表是Python中最基本的数据结构。列表中的每个元素都分配一个数字 - -即它的位置(或索引),第一个索引是0,第二个索引是1,依此类推。

序列都可以进行的操作包括索引,切片,加,乘,检查成员。

此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。

列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。

列表的数据项不需要具有相同的类型

创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:

nameList = ['xiaoming','xiaohong',1222]

与字符串的索引一样,列表索引从0开始。列表可以进行截取、组合等。

列表的访问

使用下标索引来访问列表中的值,同样你也可以使用方括号的形式截取字符,如下所示:

# 访问
nameList = ['xiaoming','xiaohong',1222]
print(nameList[0])
print(nameList[0:1])

运行结果

对于列表的打印,除了可以使用print函数直接输出,也可以使用for和while循环的方式遍历列表进行打印,如下所示:

# for循环遍历
for name in nameList:
  print(name)
# while循环遍历
i = 0
while i<len(nameList):
   print(nameList[i])
   i+=1

运行结果

从运行结果中可以看出,循环的方式其实是对列表中的每个元素进行了打印,区别于上述对整个列表的打印

列表的常见操作

添加元素操作

1. append()

append函数可以将元素添加到一个列表的末尾,如下所示:

# 1.添加元素 append
A = ['xiaoming','xiaohong',1222]
temp = input("请输入学生姓名")
A.append(temp)
print(A)

运行结果

2. extend()

extend函数可以将另一个元素逐一添加到列表中,如下所示:

# 2.extend() 可以将另一个元素逐一追加到列表中
a = [1, 2]
b = [3, 4]
a.append(b)
print(a)
a.extend(b)
print(a)

运行结果

从运行结果中我们能很明显的看出extend函数与append函数的区别:append函数将要添加的列表看成一个整体,将其作为一个新元素添加到已有列表中;extend函数将要添加的列表中的每个元素看成一个整体,将其分别添加进已有列表中。

3. insert()

insert函数可以将另一个元素添加到列表中的指定位置,如下所示:

# 3.insert() 在指定位置插入元素
a = [0, 1, 2]
a.insert(1,3)
print(a)
a.insert(-1,6)
print(a)

运行结果

运行结果中可以发现,当指定的位置为-1时(即最后一个元素),insert函数并没有将元素添加到最后的位置,而是添加到了倒数第二的位置,由此可以看出insert的工作原理是将指定插入位置及其以后的元素集体后移一位,然后再将要插入元素赋值给指定位置。

因此上述语句等价于

a.insert(3,6)

那么如何向列表的末尾添加元素呢?

其一:使用append函数

其二:将元素插入位置指定为最后一个元素下标+1,如下所示:

a = [0, 1, 2]
a.insert(3,3)
print(a)

运行结果

这是可以看到元素3被添加到列表的末尾

但同时又产生了一个新的问题,我们知道上述定义的列表a的长度为3,即其下标范围为0-2,使用插入位置3显然算是一种越界行为,那么我们将大于等于列表长度的指定位置填入insert函数中会出现什么问题呢

示例

a = [0, 1, 2]
a.insert(100,3)
print(a)
a.insert(100,8)
print(a)
a.insert(101,6)
print(a)

运行结果

很明显,这些元素无一例外地被添加到列表的末尾

修改操作

通过赋值语句可以十分简便的对列表指定元素进行修改

# 修改操作
A = ['xiaoming','xiaohong',1222]
A[1] = '小红'
print(A)

运行结果

查询操作

1. in/not in

当指定元素存在数组中时,返回True,否则返回False

# 查询 in
nameList = ['xiaoming','xiaohong',1222]
findName = 'xiaoming'
if findName in nameList:
    print("您要找到人在列表中")
else:
    print("没找到")

findName = 'Alloman'
if findName in nameList:
    print("您要找到人在列表中")
else:
    print("没找到")

运行结果

2. index()

从列表中找出某个值第一个匹配项的索引位置

a = ['a', 'b', 'c', 'a', 'b']
index = a.index('a')
print(index)

运行结果

3. count()

统计某个元素在列表中出现的次数

a = ['a', 'b', 'c', 'a', 'b']
count = a.count('a')
print(count)

运行结果

删除操作

# 删除
nameList = ['xiaoming','xiaohong',1222]
# del 根据下标删除
del nameList[2]
print(nameList)

# pop 删除最后一个元素
nameList.pop()
print(nameList)

# remove 根据元素的值进行删除
nameList.remove('xiaoming')
print(nameList)

运行结果

排序操作

# 排序
a = [1, 4, 2, 3]
# 正序  reverse=True的逆序
a.sort()
print(a)
a.sort(reverse=True)
print(a)

运行结果

当sort函数中的reverse参数被指定为True时,将对列表进行降序排序

逆序操作

# 逆序
a = [1, 4, 2, 3]
a.reverse()
print(a)

运行结果

 

列表应用实例--教师办公室分配问题

一个学校,有三个办公室, 8位老师等待分配工位,完成随机分配

# schoolNames = [['北京大学','清华大学'],
#                     ['南开大学','天津大学','天津师范大学'],
#                     ['山东大学','中国海洋大学']]
# 一维   向量  Vector
# 二维   矩阵  matrix
# 一个学校,有三个办公室, 8位老师等待分配工位,完成随机分配
import string
import random
# 定义一个列表来保存3个办公室
offices = [[],[],[]]
# 定义一个列表来存储教师的名字
names = []
for i in range(8):
    names.append(string.ascii_uppercase[i])
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("-"*30)

运行结果

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值