首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Python-VBA编程500例-021(入门级)

  • 25-03-03 04:43
  • 3682
  • 7457
blog.csdn.net

目录

1、平面列表:

1-1、Python:

1-2、VBA:

2、相关文章:

Python算法之旅:http://iyenn.com/rec/1699032.html?spm=1001.2014.3001.5502

个人主页:非风V非雨-CSDN博客

欢迎志同道合者一起交流学习,我的QQ:94509325/微信

        平面列表(Flat List)在实际中有多种应用场景,尤其在数据处理、界面展示以及软件开发等领域中发挥着重要作用。常见应用场景有:

1、数据处理与分析:

1-1、数据提取与转换:在处理大型数据集时,平面列表可以作为数据提取和转换的中间结果。通过将复杂的数据结构(如嵌套字典或数组)转化为平面列表,可以更方便地分析和处理数据。
1-2、特征工程:在机器学习和数据分析中,特征工程是一个关键步骤。平面列表可以用于创建和整理特征向量,这些向量是机器学习算法所需的输入。

2、界面展示:

2-1、列表视图:在移动应用或网页应用中,列表视图是一种常见的界面元素。平面列表可以直接映射到这些视图,展示一系列的项目或条目,如新闻列表、商品列表等。
2-2、表格数据展示:在表格中展示数据时,每一行通常可以看作是一个平面列表的实例。这样,可以方便地通过遍历平面列表来填充表格的行。

3、软件开发与编程:

3-1、算法实现:某些算法(如排序、搜索等)在处理数据时,需要数据以平面列表的形式呈现。这样,算法可以更加高效地执行,因为不需要处理复杂的嵌套结构。
3-2、数据结构优化:在编程中,有时为了提高性能或简化逻辑,会将嵌套的数据结构转换为平面列表。例如,在渲染UI组件时,使用平面列表可以减少不必要的嵌套和递归调用。

4、文件与目录操作:

4-1、文件路径解析:在处理文件路径时,虽然路径本身是嵌套的(如目录/子目录/文件),但在某些情况下,将路径转换为平面列表可以更方便地进行路径比较、搜索或操作。
4-2、目录内容展示:在文件管理器或类似的应用中,目录的内容通常以列表的形式展示。虽然目录结构本身是嵌套的,但展示给用户时通常会转化为平面列表,以便用户浏览和选择文件。

        综上所述,平面列表在实际应用中具有广泛的应用场景,包括数据处理、界面展示、软件开发以及文件与目录操作等多个方面。通过将复杂的数据结构转化为平面列表,可以简化处理流程,提高性能,并优化用户体验。

1、平面列表:
1-1、Python:
  1. # 1.问题描述:
  2. # 给定一个混合元素的列表,即元素包括列表、整数等,将其转为一个只包含整数的列表.
  3. # 2.问题示例:
  4. # 输入nested_list = [[3, 5], 6, [8, 10, 11, 24]],输出flattened_list = [3, 5, 6, 8, 10, 11, 24].
  5. # 3.代码实现:
  6. class Solution:
  7. # 将嵌套列表展平为一个整数列表
  8. # 参数nested_list:一个嵌套列表,其中每个元素可以是列表或整数
  9. # 返回值flattened_list:展平后的整数列表
  10. def flatten(self, nested_list):
  11. # 使用栈来迭代嵌套列表
  12. stack = [nested_list]
  13. # 初始化展平后的列表
  14. flattened_list = []
  15. # 当栈不为空时,持续迭代
  16. while stack:# len(stack)!=0代码可简写为stack
  17. # 弹出栈顶元素
  18. current_item = stack.pop()
  19. # 检查当前元素是否为列表
  20. if isinstance(current_item, list):# 在Python中,isinstance()是一个内置函数,用于检查一个对象是否是一个已知的类型.
  21. # 如果是列表,则将其元素逆序入栈
  22. # 逆序是为了保持原始列表中元素的相对顺序
  23. # 在Python中,reversed()是一个内置函数,用于返回一个反向迭代器,即它可以将一个序列(如列表、元组或字符串)的元素反转顺序后逐个访问.
  24. stack.extend(reversed(current_item))
  25. else:
  26. # 如果不是列表(即整数),则添加到展平后的列表中
  27. flattened_list.append(current_item)
  28. # 返回展平后的列表
  29. return flattened_list
  30. # 主函数
  31. if __name__ == '__main__':
  32. # 定义一个嵌套列表
  33. nested_list = [[3, 5], 6, [8, 10, 11, 24]]
  34. # 创建Solution对象
  35. solution = Solution()
  36. # 调用flatten方法展平嵌套列表
  37. flattened_list = solution.flatten(nested_list)
  38. # 打印输入和输出
  39. print("输入:", nested_list)
  40. print("输出:", flattened_list)
  41. # 4.运行结果:
  42. # 输入: [[3, 5], 6, [8, 10, 11, 24]]
  43. # 输出: [3, 5, 6, 8, 10, 11, 24]
1-2、VBA:
  1. Rem 自定义函数,功能:将嵌套列表展平为一个整数列表
  2. Function Flatten(nestedList As Variant) As Variant
  3. Dim stack As Collection ' 定义栈,用于存放待处理的元素
  4. Dim currentItem As Variant ' 定义变量,用于存放从栈中弹出的元素
  5. Dim flattenedList() As Variant ' 使用数组代替集合,提高性能
  6. Dim i As Long ' 定义循环变量
  7. ' 创建栈集合
  8. Set stack = New Collection
  9. ' 将嵌套列表的第一个元素(整个嵌套列表)压入栈
  10. stack.Add nestedList
  11. ' 初始化展平后的列表
  12. ReDim flattenedList(0) ' 创建一个空的Variant数组
  13. ' 循环直到栈为空
  14. Do While stack.count > 0
  15. ' 弹出栈顶元素
  16. currentItem = stack.item(stack.count)
  17. stack.Remove stack.count
  18. ' 检查当前元素是否为数组(在VBA中,嵌套列表通常表示为数组)
  19. If IsArray(currentItem) Then
  20. ' 如果是数组,则逆序遍历其元素并将它们压入栈中
  21. For i = UBound(currentItem) To LBound(currentItem) Step -1
  22. stack.Add currentItem(i)
  23. Next i
  24. Else
  25. ' 如果不是数组,则将其添加到展平后的列表中
  26. ReDim Preserve flattenedList(UBound(flattenedList) + 1)
  27. flattenedList(UBound(flattenedList)) = currentItem
  28. End If
  29. Loop
  30. ' 设置函数的返回值为展平后的列表
  31. Flatten = flattenedList
  32. End Function
  33. Rem 执行过程,功能:调用自定义函数Flatten和过程PrintArray,将嵌套列表展平为一个整数列表,并在立即窗口中输出结果
  34. Sub TestRun()
  35. Dim nestedList As Variant ' 定义变量,用于存放嵌套列表
  36. Dim flattenedList As Variant ' 定义变量,用于存放展平后的列表
  37. ' 初始化嵌套列表
  38. nestedList = Array(Array(3, 5), 6, Array(8, 10, 11, 24))
  39. ' 调用Flatten函数来展平列表
  40. flattenedList = Flatten(nestedList)
  41. ' 在立即窗口中打印输入和输出
  42. Debug.Print "输入:"
  43. PrintArray (nestedList) ' 调用辅助过程打印输入列表
  44. Debug.Print "输出:"
  45. PrintArray (flattenedList) ' 调用辅助过程打印输出列表
  46. End Sub
  47. Rem 辅助过程,功能:在VBA的立即窗口中打印数组或嵌套数组
  48. Sub PrintArray(arr As Variant)
  49. Dim i As Long ' 定义循环变量
  50. Dim subArr As Variant ' 定义变量,用于存放子数组
  51. ' 遍历数组中的每个元素
  52. For i = LBound(arr) To UBound(arr)
  53. ' 检查元素是否为数组
  54. If IsArray(arr(i)) Then
  55. Debug.Print "(" ' 打印左括号
  56. PrintArray (arr(i)) ' 递归调用打印子数组
  57. Debug.Print ")" ' 打印右括号
  58. Else
  59. ' 如果不是数组,则直接打印元素
  60. Debug.Print arr(i)
  61. End If
  62. Next i
  63. End Sub
  64. '输出结果:
  65. '输入:
  66. '(
  67. '3
  68. '5
  69. ')
  70. '6
  71. '(
  72. '8
  73. '10
  74. '11
  75. '24
  76. ')
  77. '输出:
  78. '
  79. '3
  80. '5
  81. '6
  82. '8
  83. '10
  84. '11
  85. '24

注意:1-2中的代码需粘贴到你的VBA编辑器中,按F5执行TestRun程序,在立即窗口中输出结果。

2、相关文章:

2-1、Python-VBA编程500例-020-01(入门级) 

2-2、Python-VBA编程500例-020-02(入门级)

2-3、Python-VBA编程500例-022(入门级) 

2-4、Python-VBA编程500例-023(入门级) 

Python算法之旅:http://iyenn.com/rec/1699032.html?spm=1001.2014.3001.5502
个人主页:非风V非雨-CSDN博客
欢迎志同道合者一起交流学习,我的QQ:94509325/微信:

文章知识点与官方知识档案匹配,可进一步学习相关知识
算法技能树首页概览60120 人正在系统学习中
遨游码海,我心飞扬
微信名片
注:本文转载自blog.csdn.net的神奇夜光杯的文章"https://myelsa1024.blog.csdn.net/article/details/137084360"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top