python - 将水平列表翻转为垂直列表,将垂直列表翻转为水平列表
问题描述
我想创建一个将水平列表翻转为垂直列表,将垂直列表翻转为水平列表的函数。就像拿一个 1×n 列表(1 行和 n 列)并将其翻转成一个 n×1 列表(n 行和 1 列),反之亦然。
例如:
flip_list([1, 2, 3, 4]) ➞ [[1], [2], [3], [4]]
flip_list([[5], [6], [9]]) ➞ [5, 6, 9]
第一个是水平到垂直的,第二个是垂直到水平的。
我尝试了几种方法,但无法使它们起作用。
解决方案
怎么样:
def flip_list(lst):
if not lst:
return lst
is_vertical = isinstance(lst[0], list)
if is_vertical:
return [el[0] for el in lst]
return [[el] for el in lst]
首先,我们检查给定lst
是否“真实”,请参阅文档。lst
如果列表为空或无等,这将简单地返回。
您的示例表明,在垂直列表中,每个元素本身都是另一个包含值的列表,代表列。这意味着我们可以在查看第一个元素时确定列表是垂直的还是水平的。
此时我们假设列表不为空,因为我们事先检查过。因此,我们只需获取第一个元素lst[0]
并使用内置isinstance
检查它是否是内置列表类的实例。
要翻转列表,我们使用列表推导。为了将垂直转换为水平,我们迭代列表的每个元素并将每个元素的第一个元素写入新列表。消除列。
> lst = [[5], [6], [9]]
> [el[0] for el in lst]
[5, 6, 9]
反之亦然,我们将每个元素插入到一个新列表中,创建列:
> lst = [1, 2, 3, 4]
> [[el] for el in lst]
[[1], [2], [3], [4]]
推荐阅读
- python - 无法通过仅检索记录的一列来删除记录。有什么见解吗?
- python - 使用 Python 将来自 Api 的嵌套 JSON 转换为数据框
- python - 'int' 对象没有属性 'set'
- html - 在 CSS 中对齐 toast 消息
- qt - 如何在 Yocto Linux 中为 Qt5 应用程序启用 GLX 和 EGL 与 XCB 的集成?
- excel - 如何使用 VBA 在 Q 列上循环此函数?
- git - 如何在不克隆它所连接的存储库的情况下触发 Jenkins 构建?
- python - python HTML页面中的网页抓取未满
- python - 为什么这段代码尝试通过比较来更新 pandas 列,但不起作用?
- javascript - 在 Javascript 中切换 setInterval