鱼C论坛

 找回密码
 立即注册
查看: 1030|回复: 2

[作品展示] 【Python】禁止列表套娃!

[复制链接]
发表于 2022-1-26 12:53:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 ckblt 于 2022-1-26 13:10 编辑

今天闲得没事干突发奇想做了个禁止列表套娃的函数,
把套娃的列表弄成不套娃的列表,
如:
  1. [ [ 1, 2, 3 ],
  2.   [ 4, 5, 6 ],
  3.   [ 7, 8, 9 ] ] # 套娃
  4. [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ] # 不套娃
复制代码


(小插曲:我由于懒得翻译“禁止列表套娃”,直接写成“no_list_list”了

废话少说,上代码!

  1. from typing import Union


  2. def no_list_list(
  3.     x: Union[list, tuple, set], no_tuples: bool = False, no_sets: bool = False
  4. ) -> list:
  5.     """
  6.     禁止列表套娃函数(使用递归)
  7.     返回值: 列表

  8.     ### 参数:

  9.     x: 套娃的 列表 | 元组 | 集合
  10.     no_tuples: 禁止元组套娃
  11.     no_sets: 禁止集合套娃

  12.     ### 例子:

  13.     ```
  14.     no_list_list( [ [ [ 1, 2, 3, 4, 5 ] ] ] )
  15.     [1, 2, 3, 4, 5]

  16.     no_list_list( [ [ [ 1, 2, 3, 4, 5 ], 6 ], 7 ] )
  17.     [1, 2, 3, 4, 5, 6, 7]
  18.     ```
  19.     """

  20.     new_list = []

  21.     for i in x:
  22.         if (
  23.             (isinstance(i, list))
  24.             or (no_tuples and isinstance(i, tuple))
  25.             or (no_sets and isinstance(i, set))
  26.         ):
  27.             new_list.extend(no_list_list(i, no_tuples, no_sets))
  28.         else:
  29.             new_list.append(i)

  30.     return new_list
复制代码


如有疑问,请回复我哟!

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
青出于蓝 + 1 + 1 挺不错的~

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-1-26 13:14:21 | 显示全部楼层
青出于蓝 发表于 2022-1-26 13:04
想法很好~语法好像有很多问题......

发现了一个问题(list|tuple|set改成Union[list,tuple,set])

还有什么问题呢(我用的是Python3.10,没有报错)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-26 14:26:01 | 显示全部楼层
ckblt 发表于 2022-1-26 13:14
发现了一个问题(list|tuple|set改成Union)

还有什么问题呢(我用的是Python3.10,没有报错)

没问题了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-3 07:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表