【雕爷学编程】MicroPython手册之数据类型 list 列表 len(list)

在这里插入图片描述

MicroPython是为了在嵌入式系统中运行Python 3编程语言而设计的轻量级版本解释器。与常规Python相比,MicroPython解释器体积小(仅100KB左右),通过编译成二进制Executable文件运行,执行效率较高。它使用了轻量级的垃圾回收机制并移除了大部分Python标准库,以适应资源限制的微控制器。

MicroPython主要特点包括:
1、语法和功能与标准Python兼容,易学易用。支持Python大多数核心语法。
2、对硬件直接访问和控制,像Arduino一样控制GPIO、I2C、SPI等。
3、强大的模块系统,提供文件系统、网络、图形界面等功能。
4、支持交叉编译生成高效的原生代码,速度比解释器快10-100倍。
5、代码量少,内存占用小,适合运行在MCU和内存小的开发板上。
6、开源许可,免费使用。Shell交互环境为开发测试提供便利。
7、内置I/O驱动支持大量微控制器平台,如ESP8266、ESP32、STM32、micro:bit、掌控板和PyBoard等。有活跃的社区。

MicroPython的应用场景包括:
1、为嵌入式产品快速构建原型和用户交互。
2、制作一些小型的可 programmable 硬件项目。
3、作为教育工具,帮助初学者学习Python和物联网编程。
4、构建智能设备固件,实现高级控制和云连接。
5、各种微控制器应用如物联网、嵌入式智能、机器人等。

使用MicroPython需要注意:
1、内存和Flash空间有限。
2、解释执行效率不如C语言。
3、部分库函数与标准版有差异。
4、针对平台优化语法,订正与标准Python的差异。
5、合理使用内存资源,避免频繁分配大内存块。
6、利用原生代码提升速度关键部位的性能。
7、适当使用抽象来封装底层硬件操作。

总体来说,MicroPython让Python进入了微控制器领域,是一项重要的创新,既降低了编程门槛,又提供了良好的硬件控制能力。非常适合各类物联网和智能硬件的开发。

在这里插入图片描述
MicroPython的数据类型是指在MicroPython编程环境中,可以用来表示不同种类的数据的方式。MicroPython的数据类型与Python的数据类型基本相同,但也有一些区别和限制,因为MicroPython是为了运行在资源有限的微控制器上而设计的。这里将介绍MicroPython中常用的数据类型,包括数字、字符串、列表、元组和字典,以及它们的应用场景和注意事项。

一、MicroPython数据类型 len(list)
MicroPython的 list 列表是一种用于存储多个值的数据结构,它可以包含不同类型的元素,如整数、字符串、列表等。列表中的每个元素都有一个索引,表示它在列表中的位置,索引从0开始,即列表的第一个元素的索引是0,第二个元素的索引是1,依次类推。列表是可变的,也就是说,我们可以对列表中的元素进行添加、删除、修改等操作。

列表支持很多操作,例如:
append(val):在列表的末尾添加一个新元素val。
extend(iterable):在列表的末尾添加另一个列表或可迭代对象中的所有元素。
insert(index, val):在指定的索引位置插入一个新元素val。
remove(val):从列表中移除第一个值为val的元素。
pop(index):从列表中移除指定索引位置的元素,并返回该元素。
del list[index]:从列表中删除指定索引位置的元素。
len(list):返回列表中元素的个数。
list1 + list2:将两个列表连接起来,返回一个新的列表。
list * n:将列表重复n次,返回一个新的列表。
val in list:判断val是否在list中,返回True或False。

MicroPython的len(list)是一个内置函数,用于返回一个列表(list)中的元素个数。列表是一种可变的序列类型,可以存储任意类型的数据,如数字、字符串、元组等。列表的元素用逗号分隔,并用方括号括起来,如[1, 2, 3]或[“a”, “b”, “c”]。

len(list)的应用场景有很多,例如:
1、判断一个列表是否为空,如果len(list)返回0,表示列表为空,否则表示列表非空。
2、遍历一个列表的所有元素,可以用for循环和range函数,如for i in range(len(list)),然后用list[i]访问每个元素。
3、在一个列表的末尾添加一个元素,可以用append方法,如list.append(x),这样len(list)会增加1。
4、在一个列表的指定位置插入一个元素,可以用insert方法,如list.insert(i, x),这样len(list)也会增加1。
5、删除一个列表的指定位置或指定值的元素,可以用pop或remove方法,如list.pop(i)或list.remove(x),这样len(list)会减少1。

len(list)的注意事项有以下几点:
1、len(list)只能用于列表类型的数据,如果用于其他类型的数据,如字符串、元组、字典等,会报错TypeError: object of type ‘…’ has no len()。
2、len(list)返回的是一个整数类型的值,如果需要转换为其他类型的值,如字符串、浮点数等,需要用相应的函数进行转换,如str(len(list))或float(len(list))。
3、len(list)不会改变列表本身的内容和结构,只是返回一个表示列表长度的值。

以下是几个MicroPython的len(list)实际运用程序案例:
案例一:统计用户输入的一组数字中有多少个正数、负数和零。

# 创建一个空列表
numbers = []
# 提示用户输入一组数字,并以空格分隔
print("请输入一组数字,并以空格分隔:")
# 用split方法将用户输入的字符串按空格分割成一个列表,并赋值给input_list
input_list = input().split()
# 用for循环遍历input_list中的每个元素
for x in input_list:
    # 用int函数将每个元素转换为整数,并添加到numbers列表中
    numbers.append(int(x))
# 初始化正数、负数和零的计数器为0
positive = 0
negative = 0
zero = 0
# 用for循环遍历numbers列表中的每个元素
for x in numbers:
    # 如果元素大于0,正数计数器加1
    if x > 0:
        positive += 1
    # 如果元素小于0,负数计数器加1
    elif x < 0:
        negative += 1
    # 如果元素等于0,零计数器加1
    else:
        zero += 1
# 打印结果
print("您输入了{}个数字。".format(len(numbers)))
print("其中有{}个正数。".format(positive))
print("其中有{}个负数。".format(negative))
print("其中有{}个零。".format(zero))

案例二:实现冒泡排序算法,对用户输入的一组数字进行升序排序。

# 创建一个空列表
numbers = []
# 提示用户输入一组数字,并以空格分隔
print("请输入一组数字,并以空格分隔:")
# 用split方法将用户输入的字符串按空格分割成一个列表,并赋值给input_list
input_list = input().split()
# 用for循环遍历input_list中的每个元素
for x in input_list:
    # 用int函数将每个元素转换为整数,并添加到numbers列表中
    numbers.append(int(x))
# 获取numbers列表的长度,并赋值给n
n = len(numbers)
# 用for循环遍历n-1次
for i in range(n-1):
    # 用一个标志变量记录是否发生了交换,初始为False
    swapped = False
    # 用for循环遍历n-1-i次
    for j in range(n-1-i):
        # 如果numbers[j]大于numbers[j+1],则交换它们的位置
        if numbers[j] > numbers[j+1]:
            # 用一个临时变量temp存储numbers[j]的值
            temp = numbers[j]
            # 将numbers[j+1]的值赋给numbers[j]
            numbers[j] = numbers[j+1]
            # 将temp的值赋给numbers[j+1]
            numbers[j+1] = temp
            # 将标志变量设为True,表示发生了交换
            swapped = True
    # 如果标志变量为False,表示没有发生交换,说明列表已经有序,可以提前结束循环
    if not swapped:
        break
# 打印结果
print("排序后的数字为:")
# 用join方法将numbers列表中的每个元素转换为字符串,并用空格连接成一个字符串,打印输出
print(" ".join(str(x) for x in numbers))

案例三:实现二分查找算法,查找用户输入的一个数字是否在一个有序列表中,并返回其位置。

# 定义一个有序列表
numbers = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
# 提示用户输入一个数字
print("请输入一个数字:")
# 用int函数将用户输入的字符串转换为整数,并赋值给target
target = int(input())
# 定义左右边界的索引,初始为0和len(numbers)-1
left = 0
right = len(numbers) - 1
# 定义一个标志变量记录是否找到目标值,初始为False
found = False
# 用while循环在左右边界之间查找目标值,直到左边界大于右边界或找到目标值为止
while left <= right and not found:
    # 计算中间位置的索引,用整除运算符//
    mid = (left + right) // 2
    # 如果中间位置的值等于目标值,表示找到了目标值,将标志变量设为True,并打印结果
    if numbers[mid] == target:
        found = True
        print("您输入的数字{}在列表中的第{}个位置。".format(target, mid + 1))
    # 如果中间位置的值大于目标值,表示目标值在左半部分,将右边界设为中间位置减1
    elif numbers[mid] > target:
        right = mid - 1
    # 如果中间位置的值小于目标值,表示目标值在右半部分,将左边界设为中间位置加1
    else:
        left = mid + 1
# 如果循环结束后,标志变量仍为False,表示没有找到目标值,打印结果
if not found:
    print("您输入的数字{}不在列表中。".format(target))

案例四:检查列表是否为空:

my_list = []
if len(my_list) == 0:
    print("列表为空")
else:
    print("列表不为空")

该示例使用len(my_list)函数检查列表是否为空。根据返回的长度,打印相应的消息。

案例五:遍历列表元素:

my_list = [1, 2, 3, 4, 5]
for i in range(len(my_list)):
    print(my_list[i])

这个示例使用len(my_list)函数获取列表的长度,并通过循环遍历所有的索引位置,打印每个元素。

案例六:计算列表的平均值:

my_list = [10, 20, 30, 40, 50]
total = sum(my_list)
average = total / len(my_list)
print("平均值为:", average)

在这个示例中,我们使用len(my_list)函数获取列表的长度,并使用sum()函数计算列表元素的总和。然后,通过除以列表长度,求得列表的平均值。

案例七:计算列表的平均值

numbers = [5, 10, 15, 20, 25]
total = sum(numbers)
average = total / len(numbers)
print(average)  # 输出:15.0

案例八:检查列表是否为空

names = []
if len(names) == 0:
    print("列表为空")
else:
    print("列表不为空")

案例九:遍历列表并统计特定元素的数量

fruits = ["apple", "banana", "orange", "apple", "kiwi", "apple"]
count = 0
for fruit in fruits:
    if fruit == "apple":
        count += 1
print("苹果出现的次数:", count)  # 输出:苹果出现的次数:3

这些是关于MicroPython中len(list)函数的详细解释,包括其应用场景和注意事项,并给出了三个实际运用程序案例。通过理解和灵活应用len(list)函数,可以更好地处理和操作列表数据。

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值