python小技巧01递归解释内嵌

现假设有一份机器人配件名单  list[头部,躯干,肢体]

头部这个list又有鼻子眼睛嘴巴这些小零件

肢体这个list有胳膊,肩膀,手。手这个list又有3种手指

所以这个list详细写出是:

    list=[[1,2,3,4],5,[6,7,[8,9,10]]]  #我们type(list)一下完全是list

我们需要解释了这个list,毕竟这样不符合审美,而且对于编程不熟悉的人也不会看啊。

我们是否要写好多for循环print这ist的一个个项?

for each_item in list

  if isinstance(each_item,type(list)):

    for eacha_item in each_item:

      if isinstance(eacha_item,type(list)):

        for eachaa_item in eacha_item:

          if isinstance(eachaa_item,type(list)):

            for eachaaa_item in eachaa_item:

              print(eachaaa_item)

          else:

              print(eachaa_item)

      else:

         print(eacha_item)

  else:

    print(each_item)

#当你打完这些你一定会mmp的,容易打错就不说了,大量重复代码!

 

def print_99(list1):  #list会与全局变量冲突

  for each_item in list1:

    if isinstance(each_item,list):

      print_99(each_item)  #each_item是list1的实例

    else:

      print(each_item)

事情就这么愉快的解决了,这个编程思想,感悟好多,似乎有些明白面向对象的编程了。自己一个人整整想了一个小时,似乎这就是道可道,非常道

如果不懂请在pycharm打开设置断点(就是在序号后面点豆子)然后f8下一步看解释器如何运作。f7是上一步。

本文不做后续更改仅以入门思考python运作机制和理念

 

posted @   三天泪  阅读(356)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示