当前位置: 首页 > 面试题库 >

python列表理解;压缩列表列表?

鲜于念
2023-03-14
问题内容

伙计们 我正在尝试找到问题的最优雅解决方案,并且想知道python是否为我想做的事情内置了任何东西。

我正在做的是这个。我有一个列表,A并且我有一个f接受项目并返回列表的函数。我可以使用列表推导来转换所有内容,A例如:

[f(a) for a in A]

但这返回一个列表列表;

[a1,a2,a3] => [[b11,b12],[b21,b22],[b31,b32]]

我真正想要的是获取扁平化的列表;

[b11,b12,b21,b22,b31,b32]

现在,其他语言也有它。传统上flatmap用函数式编程语言来称呼它,而.Net称它为SelectMany。python有类似的东西吗?有没有一种巧妙的方法可以将函数映射到列表并展平结果?

我要解决的实际问题是: 从目录列表开始,查找所有子目录。所以;

import os
dirs = ["c:\\usr", "c:\\temp"]
subs = [os.listdir(d) for d in dirs]
print subs

currentliy给了我一个列表列表,但是我真的想要一个列表。


问题答案:

您可以在单个列表理解中嵌套嵌套的迭代:

[filename for path in dirs for filename in os.listdir(path)]

(至少在功能上)等效于:

filenames = []
for path in dirs:
    for filename in os.listdir(path):
        filenames.append(filename)


 类似资料:
  • 问题内容: 我认为“解压”可能是错误的词汇-抱歉,我确定这是一个重复的问题。 我的问题很简单:在一个需要项目列表的函数中,如何在不出错的情况下传递Python列表项目? 当然,必须有一种方法来扩展列表,并在蹄上传递函数吗? 问题答案:

  • Ziplist 是由一系列特殊编码的内存块构成的列表, 一个 ziplist 可以包含多个节点(entry), 每个节点可以保存一个长度受限的字符数组(不以 \0 结尾的 char 数组)或者整数, 包括: 字符数组 长度小于等于 63 ()字节的字符数组 长度小于等于 16383 () 字节的字符数组 长度小于等于 4294967295 ()字节的字符数组 整数 4 位长,介于 0 至 12 之

  • 问题内容: 我有两个列表,每个列表具有相等数量的项目。这两个列表如下所示: 我正在寻找一个看起来像这样的清单: 我试图使用这样的东西: 合并两个列表列表的最佳方法是什么?提前致谢。 问题答案:

  • 我正在用Java构建一个文件浏览器,并在JTrees中列出文件/文件夹。我现在想做的是,当我到达一个压缩文件夹时,我想列出它的内容,但不首先提取它。 如果有人有想法,请分享。

  • 问题内容: 我有这个嵌套列表: 现在,我要做的是将列表中的每个元素转换为float。我的解决方案是这样的: 但这可以使用嵌套列表理解来完成吗? 我所做的是: 但是结果是一堆100的总数为2400。 任何解决方案,解释将不胜感激。谢谢! 问题答案: 这是使用嵌套列表理解的方法: 这将为你提供一个列表列表,与你开始时的列表类似,只是使用浮点数而不是字符串。如果你想要一个固定列表,则可以使用。

  • 问题内容: 使用Google Guava(Google Commons),是否可以将两个大小相等的列表合并为一个列表,而新列表包含两个输入列表的复合对象? 例: 和 将输出: 问题答案: 从Guava 21开始,可以通过以下方式实现: