Python初级案例教学之组合数据类型(列表)【第六课】

简介: ## 组合数据类型字符串、列表、元组、集合和字典都属于组合数据类型。根据数据的组织方式不同,组合数据类型主要分为三类:序列、集合和映射。序列类型包括:• 字符串(string)• 列表(list)• 元组(tuple)这里主要讲一下列表!

组合数据类型

字符串、列表、元组、集合和字典都属于组合数据类型。
根据数据的组织方式不同,组合数据类型主要分为三类:
序列、集合和映射。

序列类型

序列类型指元素按照一定的顺序排成一列的一组数。可存放多个值的连
续内存空间,值具有一定的先后顺序。元素类型可以不同,通过索引访
问序列的特定元素。
• 序列类型支持双向索引:正向索引和反向索引。
• 正向索引时,索引开始:0,索引结束:序列长度-1。
• 反向索引时,索引开始:-1,索引结束:序列的长度的负数。
• 序列类型包括:
• 字符串(string)
• 列表(list)
• 元组(tuple)
这里主要讲一下列表!

好友管理系统

1、实验题目:好友管理系统
请设计一个好友管理系统,每个功能都对应一个序号,用户可根据提示“请输入您的选项”选择序号执行相应的操作,包括:
(1)添加好友:用户根据提示“请输入要添加的好友:”输入要添加好友的姓名,添加后会提示“好友添加成功”。
(2)删除好友:用户根据提示“请输入删除好友姓名:”输入要删除好友的姓名,删除后提示“删除成功”。
(3)备注好友:用户根据提示“请输入要修改的好友姓名:”和“请输入修改后的好友姓名:”分别输入修改前和修改后的好友姓名,修改后会提示“备注成功”。
(4)展示好友:若用户还没有添加过好友,提示“好友列表为空”,否则返回每个好友的姓名。
(5)退出:关闭好友系统。

list_f = []
print("好友管理系统")
print("1.添加好友")
print("2.删除好友")
print("3.备注好友")
print("4.展示好友")
print("5.退出")

while True:
    n = int(input("请输入您的选项:"))
    if n == 1:
        f = input("请输入要添加的好友:")
        list_f.append(f)
        print("好友添加成功")
    elif n == 2:
        f = input("请输入删除好友姓名:")
        list_f.remove(f)
        print("删除成功")
    elif n == 3:
        o_name = input("请输入要修改的好友姓名:")
        n_name = input("请输入修改后的好友姓名:")
        i = list_f.index(o_name)
        list_f[i] = n_name
        print("备注成功")
    elif n == 4:
        if len(list_f) == 0:
            print("好友列表为空")
        else:
            for m in list_f:
                print(m)
    elif n == 5:
        break
print("关闭好友系统")

重点:
1.建一个空列表存放好友信息。
2.append()添加
3.remove()删除
4.index()索引匹配第一次出现的位置
在这里插入图片描述

2、实验题目:中文数字对照表

输入一个数字,转换成中文数字。比如:1234567890 -> 壹贰叁肆伍陆柒捌玖零。

简单直接上代码。

numbers = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
number = input("输入一个数字:")
for i in number:
    print(numbers[int(i)], end="")

在这里插入图片描述

3、实验题目:学生成绩管理

将学生对象存入列表中,并按成绩对学生进行排序,并获取成绩最高和成绩最低的学生信息,并将最高分和最低分的学生从列表删除,最后再对列表进行拷贝,对拷贝的列表进行翻转输出。

import copy
class Student:
    def __init__(self, sno, name, age, score):
        self.sno = sno
        self.name = name
        self.age = age
        self.score = score

    def __str__(self):
        return '学号:'+self.sno+',姓名:'+self.name+',年龄:'+self.age+',成绩:'+self.score


if __name__ == '__main__':
    ls1 = [Student('181010', '黎明', '18', '90'), Student('181256', '王三千', '20', '89'), Student('182345', '国谷机', '18', '98'), Student('181568', '白开水', '19', '67')]
    ls1.sort(key=lambda stu: stu.score)
    # n = min(ls1, key=lambda stu: stu.score)
    # m = max(ls1, key=lambda stu: stu.score)
    # print("成绩最高的学生信息:", m)
    # print("成绩最低的学生信息:", n)
    print("成绩最高的学生信息:", ls1[3])
    print("成绩最低的学生信息:", ls1[0])
    del ls1[3], ls1[0]
    ls2 = copy.deepcopy(ls1)
    ls2.reverse()
    for i in range(2):
        print(ls2[i])

重点:
1.面向对象

  1. _str _print输出时自动调用
  2. sort排序
  3. del 删除
  4. copy.deepcopy()深拷贝
  5. reverse()翻转

在这里插入图片描述

4、实验题目:商品筛选

有如下商品价格:568,239,368,425,121,219,834,1263,26,请输入随意一个价格区间进行商品的筛选,并能够对筛选出的商品进行从大到小和从小到大进行排序,并求出这个区间的商品的平均价格。

简单直接上代码!

list1 = [568, 239, 368, 425, 121, 219, 834, 1263, 26]
list2 = []
sum = 0
a = int(input('请输入一个价格下区间:'))
b = int(input('请输入一个价格上区间:'))
for i in list1:
    if i>a and i<b:
        list2.append(i)
list2.sort()
print('从小到大:', list2)
list2.sort(reverse=True)
print('从大到小', list2)
for m in list2:
    sum += m
avge = sum/len(list2)
print('平均价格:%.2f' % avge)

在这里插入图片描述

运行成功!

5、实验题目:生成验证码

验证码一般是包括一些随机产生的数字或符号,请实现随机生成一组6位验证码的功能。
每个字符可以是大写字母、小写字母或数字,有且只能是这三种类型中的一种。

1.使用range()

实现思想:
1.需要引入random库
2.将生成验证码功能写成函数,可以生成任意位数的验证码
3.通过ASCLL的值转换为大小写字母
4.随机抽取

import random
# 用range()
def code(len):
    code_list = []
    for i in range(10):
        code_list.append(str(i))  #生成数字
    for i in range(65, 91):
        code_list.append(chr(i))   #生成大写字母
    for i in range(97, 123):
        code_list.append(chr(i))   #生成小写字母
    r = random.sample(code_list, len)   
    m = ''.join(r)
    return m


if __name__ == '__main__':
    n = code(6)
    print(n)

2.使用randint()

1.需要引入random库
2.random.randint()随机抽取
3.chr()通过ASCLL值转换为字符

import random
# 用randint()
code = ''
for i in range(6):
    n = random.randint(0, 9)
    b = chr(random.randint(65, 90))
    s = chr(random.randint(97, 122))
    code += str(random.choice([n, b, s]))
print(code)

第二种更快,更简单!

6.实验题目:

编写程序,使用列表生成表达式生成一个包含20个随机整数的列表,然后对其中偶数下标的元素进行降序排列,奇数下标的元素不变。(提示,使用切片)

import random
ls = [random.randint(1, 100) for i in range(20)]
print('生成列表:', ls)
ls[::2] = sorted(ls[::2], reverse=True)
print('排序后:', ls)

在这里插入图片描述

7.实验题目:

编写程序,使用列表生成表达式生成一个包含50个随机整数的列表,然后删除其中所有奇数(提示:从后向前删。)

import random
ls = [random.randint(1, 1000) for i in range(50)]
print('生成列表:', ls)
for i in ls[::-1]:
    if i % 2 != 0:
        ls.remove(i)
print('删除后:', ls)
# ls1 = [i for i in ls if i % 2 == 0]
# print('删除后:', ls1)

ls1 = [i for i in ls if i % 2 == 0]
print('删除后:', ls1)
也能实现同等功能!

在这里插入图片描述

目录
相关文章
|
22天前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
|
3天前
|
索引 Python
Python列表
Python列表。
26 8
|
6天前
|
C语言 Python
[oeasy]python054_python有哪些关键字_keyword_list_列表_reserved_words
本文介绍了Python的关键字列表及其使用规则。通过回顾`hello world`示例,解释了Python中的标识符命名规则,并探讨了关键字如`if`、`for`、`in`等不能作为变量名的原因。最后,通过`import keyword`和`print(keyword.kwlist)`展示了Python的所有关键字,并总结了关键字不能用作标识符的规则。
24 9
|
14天前
|
数据挖掘 大数据 数据处理
python--列表list切分(超详细)
通过这些思维导图和分析说明表,您可以更直观地理解Python列表切分的概念、用法和实际应用。希望本文能帮助您更高效地使用Python进行数据处理和分析。
27 14
|
16天前
|
数据挖掘 大数据 数据处理
python--列表list切分(超详细)
通过这些思维导图和分析说明表,您可以更直观地理解Python列表切分的概念、用法和实际应用。希望本文能帮助您更高效地使用Python进行数据处理和分析。
29 10
|
24天前
|
Python
Python 中一些常见的数据类型
Python 中一些常见的数据类型
77 8
|
21天前
|
数据采集 分布式计算 大数据
构建高效的数据管道:使用Python进行ETL任务
在数据驱动的世界中,高效地处理和移动数据是至关重要的。本文将引导你通过一个实际的Python ETL(提取、转换、加载)项目,从概念到实现。我们将探索如何设计一个灵活且可扩展的数据管道,确保数据的准确性和完整性。无论你是数据工程师、分析师还是任何对数据处理感兴趣的人,这篇文章都将成为你工具箱中的宝贵资源。
|
29天前
|
Python
Python中不同数据类型之间如何进行转换?
Python中不同数据类型之间如何进行转换?
27 6
|
29天前
|
存储 开发者 Python
Python 的数据类型
Python 的数据类型
38 6
|
1月前
|
数据处理 开发者 Python
Python中的列表推导式:简洁高效的数据处理
在编程世界中,效率和可读性是代码的两大支柱。Python语言以其独特的简洁性和强大的表达力,为开发者提供了众多优雅的解决方案,其中列表推导式便是一个闪耀的例子。本文将深入探讨列表推导式的使用场景、语法结构及其背后的执行逻辑,带你领略这一特性的魅力所在。