Python基础语法小结2(列表)

Python基础语法小结2(列表)

1. 序列(sequence)
  • 序列是Python中最基本的一种数据结构。序列用于保存一组有序的数据,所有的数据在序列当中都有一个唯一的位置(索引)并且序列中的数据会按照添加的顺序来分配索引
  • 序列的分类
    • 可变序列(序列中的元素可以改变):例如 列表(list)
    • 不可变序列(序列中的元素不能改变):例如 字符串(str)元组(tuple)
2. 列表
2.1 列表的创建
  • 列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。

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

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

    lst1 = []  #创建一个空的列表
    lst2 = ['Python', 'Java', 'R', 'SPSS']  # 字符串列表
    lst3 = [1, 2, 3, 4, 5]  # 整型列表
    lst4 = [1, 'Python', 2, 'Java', 'R', 3] # 混合数据类型的列表
    
    # 使用print方法输出列表
    print(lst1)
    print(lst2)
    print(lst3)
    print(lst4)
    
2.2 访问列表中的项

列表中的每一项都有其位置索引,从列表左侧进行编号的话是从 0 开始的,从右边进行编号的话,是从 -1 开始的。我们可以使用 list_name[index] 的方式来访问列表中某一项的值

lang = ['Python', 'C#', 'R', 'Java', 'PHP']
s = lang[0] # 索引为0的项
print(s)
print(lang[2])  # 索引为2的项
s1 = lang[-1]  # 访问最后一项
print(s1)
2.3 修改列表中的值

列表定义完后,如修改里面某项的值,可以使用 list_name[index] = newvalue 的形式来完成

like_fruits = ['apple', 'pear', 'banana', 'orange']
print(f'更新前的值:{like_fruits}')
like_fruits[1] = 'berry'  # 修改索引为1处的值
print(f'更新前的值:{like_fruits}')
like_fruits[-1] = 'mango'  # 修改索引为-1处(最后一个)的值
print(f'更新末尾的值:{like_fruits}')

输出:

更新前的值:['apple', 'pear', 'banana', 'orange']
更新前的值:['apple', 'berry', 'banana', 'orange']
更新末尾的值:['apple', 'berry', 'banana', 'mango']
2.4 删除列表中的一项
# 定义一个颜色列表
list_colors = ['Red', 'Blue', 'Black', 'White', 'Pink', 'Green', 'Gray']
print('原列表:', list_colors)

# 使用 remove 删除指定值的列表项
list_colors.remove('Green')
print('使用remove删除\'Green\'后:', list_colors)

# 使用 del 删除指定索引处的列表项
del list_colors[2]         
print('使用del删除索引2处的项后:', list_colors)

# 使用pop方法移除指定索引处的项
list_colors.pop(3)         
print('使用pop方法删除索引3处的项后:', list_colors)

输出:

原列表: ['Red', 'Blue', 'Black', 'White', 'Pink', 'Green', 'Gray']
使用remove删除'Green'后: ['Red', 'Blue', 'Black', 'White', 'Pink', 'Gray']
使用del删除索引2处的项后: ['Red', 'Blue', 'White', 'Pink', 'Gray']
使用pop方法删除索引3处的项后: ['Red', 'Blue', 'White', 'Gray']

注意上面使用Remove方法来删除列表中的项时,只能使用具体的值来删除,不能使用索引,并且要删除的值必须在列表中存在,否则会报错。使用pop时只能使用索引,不能使用值来删除。

Python中的 del 不仅能删除列表中的某一项,还能将整个列表进行删除

2.5 嵌套列表

列表中又包含列表,称之为嵌套列表。/作业4中有体现/

3. 作业
3.1 作业1

题目:现在有 a = [1,2,3,4,5,6] 用多种方式实现列表的反转([6,5,4,3,2,1]) 并写出推导过程

a = [1, 2, 3, 4, 5, 6]
print(a[::-1])              # 第一种方法
print(a[-1::-1])            # 第二种方法

new_a = []                  # 第三种方法,使用pop()方法先取列表中最后一个元素传递给新列表
for i in range(len(a)):
     b = a.pop()
     new_a.append(b)
print(new_a)

a.reverse()                # 第四种方法,使用reverse()方法,永久性反转
print(a)

new_b = []                  # 第五种方法,使用insert()方法,把原列表元素在新列表中依次传递进去,得到的新列表就为倒序
for i in a:
    new_b.insert(0, i)
print(new_b)

b = list(reversed(a))        # 第六种方法,使用reversed()方法,临时性反转列表
print(b)

c = list(sorted(a, reverse=True))   # 第七种方法,使用sorted()方法,使用参数reverse,临时性反转
print(c)
3.2 作业2

题目:给用户9次机会 猜1 - 10 个数字随机来猜数字。如果随机的数字和用户输入的数字一致则表示正确,
如果不一致则表示错误。最终结果要求用户怎么也猜不对

import random

i = 1
print("您一共有9次机会猜数字")
while i < 10:
    computer = random.randint(1, 10)
    player = int(input("请输入1~10之间的数字来猜数字:"))
    if player == computer:
        print(f'电脑是{computer + 1}')
        print(f"您没猜中,还有{9-i}次机会")
        i += 1
    else:
        print(f'电脑是{computer}')
        print(f"您没猜中,还有{9-i}次机会")
        i += 1
3.3 作业3

题目:有两个列表 lst1 = [11, 22, 33] lst2 = [22, 33, 44]获取内容相同的元素

lst1 = [11, 22, 33]
lst2 = [22, 33, 44]
lst_same = []
for i in lst1:
    for j in lst2:
        if j == i:
            lst_same.append(j)
print(lst_same)
3.4 作业4

题目:现在有8位老师,3个办公室,要求将8位老师随机的分配到三个办公室中

import random
teacher = ['张', '王', '李', '赵', '宋', '欧阳', '吴', '郭']
offices = [[], [], []]     # 建立一个办公室二维空列表
for i in teacher:          # 对offices列表内每一个内列表随机传递元素
    offices[random.randint(0, 2)].append(i)  # 每一次循环teacher列表元素不一定传入offices[0]或offices[1]或offices[2]中
print(offices)

输出:列举了6次结果

[['张', '李'], ['赵', '欧阳'], ['王', '宋', '吴', '郭']]
[['李', '欧阳', '吴'], ['张', '宋'], ['王', '赵', '郭']]
[['张', '王', '李', '赵', '欧阳', '吴'], [], ['宋', '郭']]
[[], ['王', '欧阳', '吴'], ['张', '李', '赵', '宋', '郭']]
[['张', '宋', '吴'], ['赵', '欧阳'], ['王', '李', '郭']]
[['宋', '欧阳'], ['李', '赵'], ['张', '王', '吴', '郭']]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值