临沂企业建站系统,佛山住房和城乡建设厅网站,竞价排名广告,房产备案登记信息查询CheckiO 是面向初学者和高级程序员的编码游戏#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务#xff0c;从而提高你的编码技能#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码#xff0c;同时也学习学习其他大神写的代码。
Chec…
CheckiO 是面向初学者和高级程序员的编码游戏使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务从而提高你的编码技能本博客主要记录自己用 Python 在闯关时的做题思路和实现代码同时也学习学习其他大神写的代码。
CheckiO 官网https://checkio.org/
我的 CheckiO 主页https://py.checkio.org/user/TRHX/
CheckiO 题解系列专栏https://itrhx.blog.csdn.net/category_9536424.html
CheckiO 所有题解源代码https://github.com/TRHX/Python-CheckiO-Exercise 题目描述
【Flatten a List】有一个包含整数的列表其中可能包含更多的列表和整数也就是嵌套列表您需要将嵌套列表进行降维处理将所有整数值放在一个一维列表中列表中的元素顺序应与原始列表中的顺序相同另外还需要保持程序的小巧和精简因此您的代码应少于140个字符包括空格。
【链接】https://py.checkio.org/mission/flatten-list/
【输入】带整数的嵌套列表
【输出】带整数的一维列表
【前提】0 ≤ |array| ≤ 100∀ x ∈ array : -232 x 232 or x is a listdepth 10
【范例】
flat_list([1, 2, 3]) [1, 2, 3]
flat_list([1, [2, 2, 2], 4]) [1, 2, 2, 2, 4]
flat_list([[[2]], [4, [5, 6, [6], 6, 6, 6], 7]]) [2, 4, 5, 6, 6, 6, 6, 6, 7]
flat_list([-1, [1, [-2], 1], -1]) [-1, 1, -2, 1, -1]解题思路
简单粗暴可以直接将这个嵌套列表转换成字符串然后提取字符串中所有的数字去掉中括号再将所有的数字转换成一个列表注意转换成列表时要将每个数字由 str 类型转换成 int 类型不然生成的列表将是 [1, 2, 3, 4] 的形式而不是 [1, 2, 3, 4] 的形式
代码实现
import redef flat_list(array):array re.findall(r-?\d, str(array))list []for i in array:i int(i)list.append(i)return list
解法二此方法有缺陷如果给定的列表为空就会报错只适合非空列表def flat_list(array):array str(array)array array.replace([,).replace(],)return list(eval(array))
if __name__ __main__:assert flat_list([1, 2, 3]) [1, 2, 3], Firstassert flat_list([1, [2, 2, 2], 4]) [1, 2, 2, 2, 4], Secondassert flat_list([[[2]], [4, [5, 6, [6], 6, 6, 6], 7]]) [2, 4, 5, 6, 6, 6, 6, 6, 7], Thirdassert flat_list([-1, [1, [-2], 1], -1]) [-1, 1, -2, 1, -1], Fourprint(Done! Check it)大神解答 大神解答 NO.1 flat_listflambda d:[d]if inttype(d)else sum(map(f,d),[])大神解答 NO.2 def flat_list(l):r []def f(l):for i in l:r.append(i) if type(i) is int else f(i)f(l)return r大神解答 NO.3 def flat_list(array):#Memento 140!return eval([ str(array).replace([, ).replace(], ) ])